Please help me to identify the problem that I ran
into. Meanwhile, I am unable to find the JSF version
in the IDE I use. I am uncertain if my problem is
related to the version 1.1 of JSF or the problem is
with my code.
I have put a ValueChangeListener for my radio button.
I have two radio buttons. And I have two list boxes.
List box A will be displayed if the first radio button
is clicked by users. List box B will be displayed if
the second radio button is clicked by users.
To have something displayed in the list box when the
web page is "first" rendered, I would like to show a
default radio button (the first radio button) and
display the list box A.
But, my code has a "runtime" error:
quote:
------------------------------------------------------
java.lang.IllegalArgumentException: Conversion Error
setting value ''{0}'' for ''{1}''.
------------------------------------------------------
My code is show below. In my jsp page, I try to
construct a set of radio buttons and a list box:
code:
-----------------------------------------------------
<h:selectOneRadio
value="#{dataManagementBean.dataTransferTypeItems[0]}"
layout="pageDirection" onchange="submit()"
immediate="true"
valueChangeListener="#{dataManagementBean.showRecordList}">
<f:selectItems
value="#{dataManagementBean.dataTransferTypeItems}"/>
</h:selectOneRadio>
<h:selectOneListbox
value="#{dataManagementBean.record}" required="true"
immediate="true">
<f:selectItems
value="#{dataManagementBean.recordItems}"/>
</h:selectOneListbox>
----------------------------------------------------
In my backing bean, I have:
code:
-----------------------------------------------------
private SelectItem[] dataTransferTypeItems;
private Map records;
private SelectItem[] recordItems;
dataTransferTypeItems = new SelectItem[]
{
new SelectItem("import", "Records
available for import"),
new SelectItem("export", "Records
available for export")
};
public SelectItem[] showRecordList( ValueChangeEvent
event )
{
FacesContext context =
FacesContext.getCurrentInstance();
if ( ( ( String )event.getNewValue() ).equals(
"import") )
{
recordItems = ( SelectItem[] ) records.get(
"import" );
}
else
{
recordItems = ( SelectItem[] ) records.get(
"export" );
}
context.renderResponse();
return recordItems;
}
----------------------------------------------------
This is how I contruct my "records", which is a Map:
code:
----------------------------------------------------
records = new HashMap(); records.put( "import",
new SelectItem[]
{
new SelectItem( "import1", "HAFMDS -- FAC_SAR"
), new SelectItem( "import2", "LOCAL -- AFSC_SUB" ),
new SelectItem( "import3", "LOGMOD -- Chalk" ),
new SelectItem( "import4", "MDS -- Authorizations" ),
new SelectItem( "import5", "MDS --
Wartime_Inplace" )
}
);
records.put( "exports",
new SelectItem[]
{
new SelectItem( "export1", "LOGFOR -- UTA" ),
new SelectItem( "export2", "MISSION -- DESIGN_NUM" ),
new SelectItem( "export3", "AUTH -- Upgrade" ),
new SelectItem( "export4", "MISCAP -- Basic" ),
new SelectItem( "export5", "DEPID
-- HQ_FAM_PHONE" )
}
);
---------------------------------------------------
The runtime error message is:
quote:
----------------------------------------------------
java.lang.IllegalArgumentException: Conversion Error
setting value ''{0}'' for ''{1}''.
com.sun.faces.util.Util.getSelectItems(Util.java:628)
com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(MenuRenderer.java:488)
com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:465)
com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:430)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:720)
javax.faces.webapp.UIComponentTag.encodeEnd(UIComponentTag.java:623)
javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:546)
com.sun.faces.taglib.html_basic.SelectOneListboxTag.doEndTag(SelectOneListboxTag.java:521)
org.apache.jsp.pages.screen1_jsp._jspx_meth_h_selectOneListbox_0(screen1_jsp.java:383)
org.apache.jsp.pages.screen1_jsp._jspx_meth_h_form_0(screen1_jsp.java:212)
org.apache.jsp.pages.screen1_jsp._jspx_meth_f_view_0(screen1_jsp.java:164)
org.apache.jsp.pages.screen1_jsp._jspService(screen1_jsp.java:129)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
---------------------------------------------------
--- Paul Klaer <[EMAIL PROTECTED]> wrote:
> This bug has no Exception. The value is not
> correctly displayed as checked
> because of a comparison of the variable which is not
> converted into String
> so the result of the equals method returns false
> each time.
>
> On Wed, 28 Sep 2005 15:55:56 +0200, Caroline Jen
> <[EMAIL PROTECTED]>
> wrote:
>
> > Hi Stefano,
> >
> > Is this the error message you are getting
> when
> > use valueChangeListener in the <h:selectOneRadio>
> tag:
> >
> > "java.lang.IllegalArgumentException: Conversion
> Error
> > setting value ''{0}'' for ''{1}''."
> >
> > Please help me to make sure that I ran into
> the
> > same problem. Here is my selectOneRadio code:
> >
> > <h:selectOneRadio
> >
>
value="#{dataManagementBean.dataTransferTypeItems[0]}"
> > layout="pageDirection" onchange="submit()"
> > immediate="true"
> >
>
valueChangeListener="#{dataManagementBean.showRecordList}">
> > </h:selectOneRadio>
> >
> > --Caroline
> >
> >
> > --- "stefanom (sent by Nabble.com)"
> <[EMAIL PROTECTED]>
> > wrote:
> >
> >>
> >> With myfaces version 1.09 I can use a Boolean
> method
> >> in h:selectOneRadio value tag and the component
> >> converts the Boolean value in String
> automatically.
> >>
> >> In version 1.1 this conversion doesn't work and I
> >> need to use another method for the conversion.
> >>
> >>
> >> Thank you
> >>
> >> Stefano
> >>
> >>
> >> --
> >> Sent from the MyFaces - Users forum at
> Nabble.com:
> >>
> >
>
http://www.nabble.com/selectOneRadio-in-myfaces-1.1-t354851.html#a982138
> >>
> >
> >
> >
> >
> > __________________________________
> > Yahoo! Mail - PC Magazine Editors' Choice 2005
> > http://mail.yahoo.com
>
>
>
__________________________________
Yahoo! Mail - PC Magazine Editors' Choice 2005
http://mail.yahoo.com