Menu is the same as well: public class HtmlSelectOneMenu extends org.apache.myfaces.component.html.ext.HtmlSelectOneMenu { /** * @see javax.faces.component.UIInput#setSubmittedValue(java.lang.Object) */ @Override public void setSubmittedValue(Object submittedValue) { if (submittedValue == RendererUtils.NOTHING || submittedValue == org.apache.myfaces.shared_impl.renderkit.RendererUtils.NOTHING) submittedValue = null; super.setSubmittedValue(submittedValue); } }
On 5/31/07, Andrew Robinson <[EMAIL PROTECTED]> wrote:
Yes, I extended the myfaces class to fix the bug: public class HtmlSelectOneRadio extends org.apache.myfaces.component.html.ext.HtmlSelectOneRadio { /** * @see javax.faces.component.UIInput#setSubmittedValue(java.lang.Object) */ @Override public void setSubmittedValue(Object submittedValue) { if (submittedValue == RendererUtils.NOTHING || submittedValue == org.apache.myfaces.shared_impl.renderkit.RendererUtils.NOTHING) submittedValue = null; super.setSubmittedValue(submittedValue); } } On 5/30/07, Celso Nishioka <[EMAIL PROTECTED]> wrote: > 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 > > > >> >> > > > >> > > > > >> > > > > >> > > > > >> > > > >> > > > >> > > > > > > > > > > > > > > > > > > > > > > > > >