私は JSF 2 を使用して Web アプリを開発しています。とりわけ、私の Web アプリには、一度に 1 つずつ配置された一連の質問が含まれており (一度に 1 つの質問が表示されます)、複数の回答があります (h:selectManyCheckbox を使用します)。
質問と可能な回答を ArrayList ("gridQuestionListClone") に保存し、ユーザーの回答を (最後にチェックする前に) HashMap ("allQuestionUserAnswerMap") に保存します。(答えが必要な場合は、ストレージのモダリティを変更できます)。
ユーザーがすべての質問に回答し終わったら、ユーザーがページ内のすべての質問と回答を再確認できるようにしたいと考えています (回答をプリロードしたい)。したがって、すべての質問とそれに対応するチェックボックス (質問ごとに 3 つ) と、ユーザーが 1 つのページでチェックボックスをオンにしました。
したがって、私は 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>
何か案は?