gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:20:01 25 4
gpt4 key购买 nike

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

<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关联起来。现在,您不会在任何地方执行此操作,并且基本上将所有 输入值绑定(bind)到同一个 bean 属性。因此,当提交表单时,每次迭代都会使用当前迭代轮次的值覆盖 bean 属性,直到最终获得上一次迭代轮次的值。这绝对是不对的。

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

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

在您的具体情况下,这只会将“问题”模型与“答案”模型紧密耦合。将他们分开是合理的。在您的具体情况下,更合适的解决方案是将当前迭代的 #{question} 作为键进行映射(前提是它具有正确的 equals()hashCode () 实现,显然):

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

与:

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

无论采用哪种方法,在操作方法中,只需迭代它即可将它们全部收集起来。

关于jsf - ui :repeat, 内的输入组件如何保存提交的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28054410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com