繁体   English   中英

ui:repeat中的输入组件,如何保存提交的值

[英]input component inside ui:repeat, how to save submitted values

我正在显示数据库中的问题列表,对于每个问题,我必须显示选项列表,在此情况下为单选按钮。

<ui:repeat value="#{formData.questions}" var="question">
    <div>
        <p:outputLabel value="#{question.name}" />
        <p:selectOneRadio value="#{formData.selectedOption}">
            <f:selectItems value="#{formData.options}" />
        </p:selectOneRadio>
    </div>
</ui:repeat>

我需要为每个问题保存选中的选项。

我怎样才能做到这一点?

您需要以某种方式将输入值与重复变量var关联。 现在,您不会在任何地方执行此操作,并且基本上将所有输入值绑定到一个相同的bean属性。 因此,提交表单时,每次迭代都会使用当前迭代回合的值每次覆盖bean属性,直到最终获得上一轮迭代的值为止。 这绝对是不对的。

最简单的方法是直接将其与var表示的对象关联:

<p:selectOneRadio value="#{question.selectedOption}">

在您的特定情况下,这仅将“问题”模型与“答案”模型紧密结合在一起。 将它们分开是合理的。 在您的特定情况下,更合适的解决方案是使用当前迭代的#{question}作为键来映射它hashCode()显然,它具有适当的equals()hashCode()实现):

<p:selectOneRadio value="#{formData.selectedOptions[question]}">

带有:

private Map<Question, String> selectedOptions = new HashMap<>();

不管采用哪种方法,在动作方法中,只需对其进行迭代以收集所有内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM