0

ボタンを押したときに値StringList<String>内部に入れると、ui:repeatの最後の要素のレコードだけが含まれていることがわかります。<ui:repeat>List<String>

<ui:repeat value="#{util:toList(test.mapQestionsWithAnswers)}" var="entry">
                <h:inputHidden value="#{entry.key.questionId}" />
                <h:outputText value="#{entry.key.question}"
                    rendered="#{not empty entry.value}" />
                <p:selectManyCheckbox value="#{test.questionAnswerList}"
                    layout="pageDirection">
                    <f:selectItems value="#{entry.value}" var="ans"
                        itemValue="#{entry.key.questionId} #{ans.answer.answerId}"
                        itemLabel="${ans.answer.answer}" />
                </p:selectManyCheckbox>
            </ui:repeat>

util:toListBaluscanswerからのアイデアjsfでハッシュマップ値を表示する方法は?

//更新 マップを使用せずにこのコードを書き直しました

<ui:repeat value="${test.questionList}" var="question">
                <h:outputText value="#{question.question}"
                    rendered="#{not empty question}" />
                <p:selectManyCheckbox value="#{test.questionAnswerList}"
                    layout="pageDirection">
                    <f:selectItems value="#{question.questionAnswers}" var="ans"
                        itemValue="#{ans.questionAnswerIdentifer.questionId} #{ans.questionAnswerIdentifer.answerId}"
                        itemLabel="#{ans.answer.answer}" />
                </p:selectManyCheckbox>
            </ui:repeat>

List<String>しかし、それは私がの最後の質問に対する質問の答えをペアで得ることができるのを助けません<ui:repeat/>。すべての反復の後にquestionAnswerListが空になるようです

//わかりました、いくつかの記事を読みましたui:repeat内のPrimefaces ManyCheckboxは、最後のループに対してのみsetterメソッドを呼び出します

そして、マップマップを使用することにしました>

しかし、この部分では、エラーClassCastException文字列をリストにキャストできません

public List<String> getQuestionAnswerList() {
    // return questionAnswerList;
    List<String> selectedQuestionAnswer = new ArrayList<String>();
    if (!selectedItems.isEmpty()) {
        Set<Long> idsSet = selectedItems.keySet();
        for(Long questionId : idsSet){              
            List<String> questionAnswerPair = selectedItems.get(questionId);
            selectedQuestionAnswer.addAll(questionAnswerPair);
        }
    }
    return selectedQuestionAnswer;
}
<p:selectManyCheckbox value="#{test.selectedItems[question.questionId]}"
                    layout="pageDirection">
                    <f:selectItems value="#{question.questionAnswers}" var="ans"
                        itemValue="#{ans.questionAnswerIdentifer.questionId} #{ans.questionAnswerIdentifer.answerId}"
                        itemLabel="#{ans.answer.answer}" />
                </p:selectManyCheckbox> 

選択したすべての値を取得するにはどうすればよいList<String>ですか?

4

1 に答える 1

1

myMapキーがありentry.key、値が次のような同じタイプのリストになるマップを作成できます(たとえば、それを呼び出します)。questionAnswerList

何かのようなもの

<p:selectManyCheckbox value="#{test.myMap[entry.key].questionAnswerList}"
    layout="pageDirection">
    <f:selectItems value="#{entry.value}" var="ans"
        itemValue="#{entry.key.questionId} #{ans.answer.answerId}"
        itemLabel="${ans.answer.answer}" />
</p:selectManyCheckbox>
于 2012-11-25T11:41:17.560 に答える