I think you may need to use different methods in the backing bean to return the selectitems. Each question should have it's own instance of the selectItemList. You can use a factory to return the different instances of the same list.
On Thu, Jun 25, 2009 at 4:14 PM, Scott Carter <[email protected]>wrote: > I have a jsf page which has a series of questions on it, each with radio > select for the answers. Each of the questions uses the same set of answers > ( Agree . Disagree, Neutral ). Since so many of the possible answer sets > repeat themselves I just put a method in the backing bean that returns an > array of SelectItem with the choices in it. > > This approach only works if the user only answers one question. If more > than one question is answered (the user selects a radio button for more than > one question) then a validation error occurs. Each of the > <h:selectOneRadio> tags has a unique id. Also each of the <f:selectItem> > tags have a unique id, even though they call back to the same backing method > for the choices. In the backing bean method a new array is created and > returned each time for the choices. I even tested creating a new method > that returns an array of of SelectItem for the choices and had exactly the > same issue. > > If I change the code and put the <f:selectItem> tags directly inline in the > code instead of calling the backing bean for an array of selectItems , then > everything works like it should. I am very lost as to why I can not use the > <f:selectItems> functionality more than once in a page. Here is a piece of > the code: > > <tr><td><h:outputText value="#{assessment.currentQuestionText}" > /></td></tr> > <tr><td><h:selectOneRadio id="q3answers" > value="#{assessment.q3}"> > <f:selectItems id="q3list" > value="#{assessment.currentQuestionAnswers}"/> > </h:selectOneRadio> > <br> > </td> > </tr> > > <tr><td><h:outputText > value="#{assessment.currentQuestionText}" /></td></tr> > <tr><td><h:selectOneRadio id="q4answers" > value="#{assessment.q4}"> > <f:selectItems id="q4list" > value="#{assessment.currentQuestionAnswers}"/> > </h:selectOneRadio> > <br> > </td> > </tr> > > You can see that each time I want a list of answers I call the > currentQuestionAnswers method of the backing bean. The page displays > correctly, and like stated above, the user can select an answer to one of > the questions, but if the user answers both questions there is a validation > error everytime. Any ideas? Help is greatly appreciated! > > - Scott >

