I am getting a bit stuck on this one exception. I have two
selectOneRadio components within an included facelet (source file)
that bind to a property on a facelet attribute. The value is a custom
bean with string properties and the select items have string values,
so no converter should be needed. What is odd is that this behavior is
not constant.

Setup:
index.xhtml defines this component:
       <ost:liveReportFilterDialog
         id="liveReportFilterDlg"
         ajaxZone="reportListZone"
         rendered="#{liveReportBean.filterDialogVisible}"
         onAcceptListener="#{liveReportBean.filterDialogAccepted}"
         onCancelListener="#{liveReportBean.filterDialogCanceled}"
         value="#{liveReportBean.filter}" />

It is this "value" that I use within the "liveReportFilterDialog.xhtml":

 <t:selectOneRadio
   id="#{id}TypeOptions"
   value="#{value.typeText}"
   layout="pageDirection"
   required="true">
   <f:selectItem
     itemLabel="#{msg.liverep_filterdlg_typefilter_graph}"
     itemValue="osoft/livechart" />
   <f:selectItem
     itemLabel="#{msg.liverep_filterdlg_typefilter_report}"
     itemValue="osoft/livereport" />
   <f:selectItem
     itemLabel="#{msg.liverep_filterdlg_typefilter_schedule}"
     itemValue="osoft/liveschedule" />
 </t:selectOneRadio>

The other radio is:

 <t:selectOneRadio value="#{value.ownerStr}"
   layout="pageDirection">
   <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_all}"
     itemValue="ALL" />
   <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_owner}"
     itemValue="CURRENT_USER" />
 </t:selectOneRadio>


This dialog is usually not rendered, I change the value that the
rendered attribte points to in an AJAX call ActionListener method.
When I click the show, it works. Then, I click the cancel (close the
dialog), still okay, but when I try to open the dialog again (3rd AJAX
call) I get the following exception:
java.lang.IllegalArgumentException: Value is no String
(class=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1,
[EMAIL PROTECTED])
and component 
zfpPanel:liveReportFilterDlgDialogControl:_gridBagPanelID_3:liveReportFilterDlgTypeOptionswith
path: {Component-Path : [Class:
javax.faces.component.UIViewRoot,ViewId:
/pages/liveReport/index.xhtml][Class:
javax.faces.component.html.HtmlForm,Id: zfpForm][Class:
com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
zfpPanel][Class:
com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
zfpContentCell][Class:
com.outlooksoft.cpm.faces.controls.UIAjaxZone,Id: zfpBodyZone][Class:
com.outlooksoft.cpm.livereport.controls.HtmlReportFilterDialog,Id:
liveReportFilterDlg][Class:
com.outlooksoft.cpm.faces.controls.UIDialog,Id:
liveReportFilterDlgDialogControl][Class:
com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
_gridBagPanelID_3][Class:
com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
_gridBagCellID_29][Class:
org.apache.myfaces.component.html.ext.HtmlSelectOneRadio,Id:
liveReportFilterDlgTypeOptions]} does not have a Converter
       at 
org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:536)
       at 
org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRadioRendererBase.encodeEnd(HtmlRadioRendererBase.java:93)
       at 
org.apache.myfaces.renderkit.html.ext.HtmlRadioRenderer.encodeEnd(HtmlRadioRenderer.java:71)
       at 
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)
       at 
org.ajaxanywhere.jsf.ZoneUIComponent.renderComponent(ZoneUIComponent.java:90)
...

The "ownerStr" is "ALL" and the "typeText" is null. I have been unable
to determine why it fails on this 3rd call and not 1 or 2. If I
refresh the page, the dialog is rendered & shown fine. I verified that
it isn't a problem with the message bundle (msg), as it still happens
if I hard code the itemLabel values.

I am on a 1.1.3 patched version of both Tomahawk and Core.

Any ideas? (also, I haven't yet found the RendererUtils$1 anonymous
class yet to find where it is coming from)

Thanks,
-Andrew

Reply via email to