我正在使用 JSF 2 开发一个 Web 应用程序。我的 Web 应用程序除其他外包含一系列问题,一次提出一个问题(因此一次可以看到一个问题)并且有多个答案(我使用 h:selectManyCheckbox)。
我将问题和可能的答案存储在 ArrayList(“gridQuestionListClone”)中,用户的答案(在最后检查它们之前)存储在 HashMap(“allQuestionUserAnswerMap”)中。(如果答案需要,我可以更改存储方式)。
当用户回答完所有问题后,我希望用户可以重新检查页面中的所有问题和答案(我希望预先加载答案)。因此,所有问题及其对应的复选框(每个问题 3 个),用户在一页中选中了复选框。
所以我使用 ui:repeat 来检查所有问题和可能的答案,我需要一种机制来检查正确的复选框(用户检查过的)并让用户可以更改他/她的答案以及当我按下提交按钮时(例如)知道哪些复选框对应于哪些问题。让事情更清晰的草图:))(也许)。因此,当用户回答完我要向他展示的所有单个问题时:
Question 1:
a) answer1 - CHECKED
b) answer2 - UNCHECKED
c) answer3 - CHECKED
------------------------
Question 2:
a) answer1 - UNCHECKED
b) answer2 - UNCHECKED
c) answer3 - CHECKED
------------------------
Question 3:
a) answer1 - CHECKED
b) answer2 - CHECKED
c) answer3 - UNCHECKED
------------------------
.
.
.
Question n:
a) answer1 - CHECKED
b) answer2 - UNCHECKED
c) answer3 - CHECKED
------------------------
SUBMIT button
用户检查他/她的答案并在需要时对其进行修改,然后按下提交按钮。然后我想收集某种(或多个我并不关心,之后我可以合并它们)的集合,其中包含问题的数量和可能的答案,例如在乞讨时的“allQuestionUserAnswerMap”或类似的东西.
我的琐碎代码(不正确):
<ui:repeat var="p" value="#{gridPopUpBean.gridQuestionListClone}">
<hr />
<h:panelGrid columns="2">
...
<h:panelGroup style="text-align: left">
<h:selectManyCheckbox
value="#{gridPopUpBean.oneQuestionUserAnswerList}"
layout="pageDirection">
<f:selectItem itemValue="a"
itemLabel="#{p.a}" />
<f:selectItem itemValue="b"
itemLabel="#{p.b}" />
<f:selectItem itemValue="c"
itemLabel="#{p.c}" />
</h:selectManyCheckbox>
...
</h:panelGroup>
</h:panelGrid>
</ui:repeat>
有任何想法吗?