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
>

Reply via email to