jsf-2 – 在表单提交期间不处理ui:repeat中动态添加的输入字段

jsf-2 – 在表单提交期间不处理ui:repeat中动态添加的输入字段,第1张

概述我试图在我的应用程序中为答案创建一个输入表单,然后从四个“空”答案开始,视图循环并为其创建输入字段.我有一个添加答案按钮,我将一个问题添加到答案数组,然后视图再次呈现答案,但现在有一个额外的输入字段.支持bean是视图编组的.但是,如果我在没有按下添加答案按钮的情况下提交表单,则一切正常.数据保存在数据库中.但是如果我在四个填写完后添加答案,则最后一个不会从输入字段中获取数据(answer.des 我试图在我的应用程序中为答案创建一个输入表单,然后从四个“空”答案开始,视图循环并为其创建输入字段.我有一个添加答案按钮,我将一个问题添加到答案数组,然后视图再次呈现答案,但现在有一个额外的输入字段.支持bean是视图编组的.但是,如果我在没有按下添加答案按钮的情况下提交表单,则一切正常.数据保存在数据库中.但是如果我在四个填写完后添加答案,则最后一个不会从输入字段中获取数据(answer.description).如果我先按下添加答案(不填写任何输入字段),则根本不会捕获字段中的数据,所有数据都为空,因此数据库中不会保存任何数据.

我有以下形式:

<ui:repeat var="answer" value="#{bean.answers}">            <div >                <h:outputLabel for="answerAlternative-#{answer.serialNumber}"                    value="Svaralternativ #{answer.serialNumber}" />                <h:inputText ID="answerAlternative-#{answer.serialNumber}"                    value="#{answer.description}" size="40" />            </div>        </ui:repeat>

这是创建新输入字段的方法:

public String addAnswer() {    if (answers.size() + 1 < 6) {        Answer answer = new Answer();        answer.setSerialNumber(answerSerialNumber + "");        answerSerialNumber++;        answers.add(answer);    }    return null;}

用于使用四个空输入字段初始化answers数组:

@postconstructpublic voID initBean() {    answers = new ArrayList<Answer>();    for (int i = 0; i < 4; i++) {        addAnswer();    }}
解决方法 这看起来与< ui:repeat>的当前问题相匹配在莫哈拉.在Mojarra是 totally broken.

你基本上有两个选择:

>将Mojarra替换为MyFaces,这样可以更稳定地实施< ui:repeat>.
>使用UIData组件而不是< ui:repeat>,例如<h:dataTable>,Tomahawk的<t:dataList>,PrimeFaces的<p:dataList>

总结

以上是内存溢出为你收集整理的jsf-2 – 在表单提交期间不处理ui:repeat中动态添加的输入字段全部内容,希望文章能够帮你解决jsf-2 – 在表单提交期间不处理ui:repeat中动态添加的输入字段所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1129402.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存