2010-06-14 58 views
0

我有一个问题列表,我可以使用ui:repeat来显示它们,但是单击Edit按钮后,重新输入inputText被赋予错误的问题。出于某种原因,如果在第一项上单击编辑,则分配的inputText值是列表中第二项的值,即使其他输出(除h:inputText元素之外)都是正确的。JSF ui:repeat和f:ajax在给出h:inputText后给出错误的值

<h:form id="questionnaireForm"> 

     <ui:repeat value="#{ProjectManager.currentProject.preQuestions}" var="question" varStatus="current" 
        id="preQuestionsRepeat"> 
      <div> 
       <ui:fragment rendered="#{!question.editing}"> 
        <f:ajax render="@form"> 
         <p>#{question.id} #{question.questionText}</p> 
         <h:inputText value="#{question.id}"/> 
         <h:commandLink styleClass="link" 
             action="#{question.setEditing}" 
             value="Edit"> 
         </h:commandLink> 
        </f:ajax> 
       </ui:fragment> 
      </div> 
      <div> 
       <ui:fragment rendered="#{question.editing}"> 
        <f:ajax render="@form"> 
         <p>#{question.id} #{question.questionText}</p> 
         <h:inputText value="#{question.id}"/> 
        </f:ajax> 
       </ui:fragment> 
      </div> 
     </ui:repeat> 

    </h:form> 

显然我不是真的想编辑id。我只是想要正确的问题。我的输入文本中显示的东西:-)

也许我没有正确使用?到目前为止,根据我的阅读,这似乎很好。

非常感谢您的协助。

回答

1

你有没有正确覆盖equals()和hashCode()?这些方法用于从您选择的列表中提取值。它拉出与equals()运算符匹配的第一个。

+0

谢谢你这个布赖恩。我尝试了你听起来很棒的建议,但不幸的是它没有任何区别,所以我们重新设计了整个页面来使用jQuery和一个servlet代替;-) – Andrew 2010-07-13 05:19:45