Andrew, I'm having the same issue. Did you get it solved?
Thanks. On 11/29/06, Andrew Robinson <[EMAIL PROTECTED]> wrote:
No that hasn't changed, I just checked the source. If you look at the stack trace, somehow the value is an instance of "org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1" -- it is not null inside the "RendererUtils.getConvertedStringValue" method. How in the world that happened is beyond me. -Andrew On 11/29/06, Jeff Bischoff <[EMAIL PROTECTED]> wrote: > Andrew, > > Looking at the current code, it shouldn't throw that against a null > value. Maybe they've changed this since your version? Perhaps you could > try with the nightlies just to see if the same behavior happens? > > RenderUtils > ------------ > public static String getConvertedStringValue(FacesContext context, > UIComponent component, > Converter converter, Object value) { > if (converter == null) { > if (value == null) { > return ""; > } > else if (value instanceof String) { > return (String) value; > } > else { > throw new IllegalArgumentException( > "Value is no String (class=" + > value.getClass().getName() + ", value=" + value + ") and component " > + component.getClientId(context) + "with path: " > + getPathToComponent(component) > + " does not have a Converter"); > } > } > > return converter.getAsString(context, component, value); > } > ----------- > > Maybe your version is missing the lines: > > if (value == null) { > return ""; > } > > Regards, > > Jeff Bischoff > Kenneth L Kurz & Associates, Inc. > > Andrew Robinson wrote: > > Yes that is correct, it was always null but only failed to render the > > 3rd request. > > > > On 11/29/06, Jeff Bischoff <[EMAIL PROTECTED]> wrote: > >> Well the reason it doesn't work is because of the null. > >> > >> Are you saying it was set to null the whole time, and only failed on the > >> 3rd request (after having canceled the dialog once)? > >> > >> Regards, > >> > >> Jeff Bischoff > >> Kenneth L Kurz & Associates, Inc. > >> > >> Andrew Robinson wrote: > >> > Found a work around --> > >> > if "value.typeText" is set to one of the values instead of null I > >> > don't get the exception. What I don't understand is why it works the > >> > other times but not the 3rd AJAX call. > >> > > >> > On 11/29/06, Andrew Robinson <[EMAIL PROTECTED]> wrote: > >> >> 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, > >> >> > >> value= [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 > >> >> > >> > > >> > > >> > > >> > >> > >> > > > > > > > > >