Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf ui内输入组件:重复,如何保存提交的值_Jsf_Input_Uirepeat - Fatal编程技术网

Jsf ui内输入组件:重复,如何保存提交的值

Jsf ui内输入组件:重复,如何保存提交的值,jsf,input,uirepeat,Jsf,Input,Uirepeat,我正在显示数据库中的问题列表,对于每个问题,我必须显示选项列表,在本例中为单选按钮 <ui:repeat value="#{formData.questions}" var="question"> <div> <p:outputLabel value="#{question.name}" /> <p:selectOneRadio value="#{formData.selectedOption}">

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

<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}">
与:

private Map selectedOptions=new HashMap();

不管采用哪种方法,在action方法中,只需对其进行迭代即可将其全部收集。

有什么不适用于此?(根据您的需要,您可以选择使用其他迭代组件,尤其是在本例中,。作为奖励,如果列表打孔问题太长,您将收到开箱即用的分页功能)。我使用的是映射方法,那么什么是清除映射的正确位置?我在考试中使用会话范围管理bean的第二件事是这样的吗?最后,我只需要知道将jpa实体对象传递到JSF页面的正确方法是什么?谢谢它的帮助!您能分享一下JPA实体进入jsf层的好做法吗?@eatSleepCode:如果您想要更多链接,请查看
<p:selectOneRadio value="#{formData.selectedOptions[question]}">
private Map<Question, String> selectedOptions = new HashMap<>();