Just for kicks, could you change your getter to return a List<SelectItem> instead of SelectItem[]?
On Fri, Jun 26, 2009 at 10:10 AM, Sam <[email protected]> wrote: > Sorry, my mistake. What's the stacktrace on your validation error? > > > On Fri, Jun 26, 2009 at 10:05 AM, Scott Carter > <[email protected]>wrote: > >> I am not sure I follow, what setter are you looking for? Below is the >> method that creates the array, and this is the code on the jsf page: >> >> <tr><td><h:outputText value="#{assessment.currentQuestionText}" >> /></td></tr> >> <tr><td><h:selectOneRadio id="q3answers" >> value="#{assessment.q3}" layout="spread"> >> <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}" layout="spread"> >> <f:selectItems id="q4list" >> value="#{assessment.*currentQuestionAnswers*}"/> >> </h:selectOneRadio> >> <br> >> </td> >> </tr> >> >> Thank you for the help, just really lost as to why this would not work if >> there is more than one question on a page. >> >> >> On Fri, Jun 26, 2009 at 11:01 AM, Sam <[email protected]> wrote: >> >>> How about the setter? >>> >>> >>> On Fri, Jun 26, 2009 at 9:52 AM, Scott Carter >>> <[email protected]>wrote: >>> >>>> So here is the method that returns the selectItem list. Each time it >>>> creates a new array. Do you still think this might be the issue? I am >>>> really lost on this one: >>>> >>>> public SelectItem[] getCurrentQuestionAnswers() >>>> { >>>> Question currentQuestion = this.questionList.get(questionCount); >>>> >>>> int qWeight = currentQuestion.getQuestionWeight(); >>>> >>>> SelectItem[] answers = new SelectItem[5]; >>>> answers[0] = new SelectItem(Integer.toString(qWeight) , "SA"); >>>> answers[1] = new SelectItem(Integer.toString(qWeight - (qWeight >>>> / 5)) , "A"); >>>> answers[2] = new SelectItem(Integer.toString(qWeight - ((qWeight >>>> / 5) * 2)), "N"); >>>> answers[3] = new SelectItem(Integer.toString(qWeight - ((qWeight >>>> / 5) * 3)) , "D"); >>>> answers[4] = new SelectItem(Integer.toString(qWeight - ((qWeight >>>> / 5) * 4)) , "SD"); >>>> >>>> >>>> >>>> this.questionCount++; >>>> return answers; >>>> } >>>> >>>> This method does declare a new array each time >>>> >>>> >>>> On Fri, Jun 26, 2009 at 10:33 AM, Sam <[email protected]> wrote: >>>> >>>>> 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 >>>>>> >>>>> >>>>> >>>> >>> >> >

