Obscure JSF error in WebSphere Portal

On the project I am working on now we are using IBM’s JSF implementation for portlets.  I am happily (or as happy as I can be while using JSF) coding along.  I add a dropdown (selectOneMenu) to my jsp and backing bean.

But when I try to render the portlet I keep getting this error:

[1/27/09 19:25:24:955 EST] 00000070 SystemErr     R java.lang.IllegalArgumentException: “{2}” Conversion Error setting value ”{0}” for ”{1}”.
at com.sun.faces.util.Util.getSelectItems(Util.java:647)
at com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(MenuRenderer.java:573)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:534)
at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:473)
at com.ibm.faces.renderkit.DefaultAjaxRenderer.encodeEnd(DefaultAjaxRenderer.java(Compiled Code))
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java(Compiled Code))
at com.ibm.faces.renderkit.html_extended.Utils.encodeComponent(Utils.java(Compiled Code))

It took me forever to figure out, but the issue was caused by mistyping my backing bean name in the jsp.

I had typed this:

<h:selectOneMenu id=”menu1″ styleClass=”selectOneMenu” value=”test”>
<f:selectItem itemValue=”ViewAll” itemLabel=”View All” />
<f:selectItems value=”#{claimList.selectProviders}” />
</h:selectOneMenu>

Instead of:

<h:selectOneMenu id=”menu1″ styleClass=”selectOneMenu” value=”test”>
<f:selectItem itemValue=”ViewAll” itemLabel=”View All” />
<f:selectItems value=”#{claimsLists.selectProviders}” />
</h:selectOneMenu>

The correct code has an ’s’ on end of the backing bean name.  Messing that up caused the cryptic error and a lot of time troubleshooting.

Of course, you maybe asking “Why are you typing that in instead of just using the GUI to build your code?”.  Well, like most things, it doesn’t always work as designed.  RAD (Rational Application Developer) for whatever reason stopped liking my backing bean.  It shows up in the GUI, but none of the public methods are availble in the “wizard”.  I don’t have time to troubleshoot it, so I’ve been coding the connection to the backing bean by hand.