【问题标题】:JSF ui:repeat and f:ajax giving wrong value for h:inputText after rerenderJSF ui:repeat 和 f:ajax 在重新渲染后为 h:inputText 提供错误值
【发布时间】:2010-06-14 06:10:43
【问题描述】:

我有一个问题列表,我可以使用 ui:repeat 来显示它们,但是在单击“编辑”按钮后,重新呈现的 inputText 给出了错误的 question.id。出于某种原因,如果您在第一项上单击编辑,则分配的 inputText 值是列表中第二项的值,即使其他输出(除了 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。我只想在我的 inputText 中显示正确的 question.something :-)

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

非常感谢您的帮助。

【问题讨论】:

    标签: ajax jsf jsf-2


    【解决方案1】:

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

    【讨论】:

    • 感谢这个布赖恩。我试过你的建议,听起来不错,但不幸的是它没有任何区别,所以我们重新设计了整个页面以使用 jQuery 和 servlet ;-)
    猜你喜欢
    • 2011-05-07
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 2012-12-26
    相关资源
    最近更新 更多