1

ユーザーの回答を得ることを実現するという考えは1つだけです。私は使用を決定しList<String> questionsWithAnswers、「1_1」、「1_2」、「1_3」、「2_1」のようなこのリストのペアを入れます。このようなもの。しかし、この考えでも私には問題があります。また、Webサービスを使用することも重要です(たとえば、質問と回答のペアを保存するための構造としてマップを使用する場合の制約です)。

********私の豆********

    public class TestBean implements Serializable{
    
        private static final long serialVersionUID = 1L;
        
        private List<Test> testList;
        private List<Answer> answerList;
        private List<Subject> subjectList;
        private Map<Question, List<QuestionAnswer>> mapQestionsWithAnswers;
        private List<String> questionAnswerList;
        
        private Long subjectId = 0L;
        private Test test;
//...
}

getTest.xhtml

<c:forEach items="#{test.testBean.mapQestionsWithAnswers}"
                    var="entry">
                    <h:inputHidden value="#{entry.key.questionId}" />
                    <h:outputText value="#{entry.key.question}" rendered="#{not empty entry.value}"/>                   
                    <h:selectManyCheckbox value="#{test.testBean.questionAnswerList}" layout="pageDirection">
                        <f:selectItems value="#{entry.value}" var="ans"
                            itemValue="#{fnc:concat(ans.answer.answerId, entry.key.questionId)}"
                            itemLabel="${ans.answer.answer}" />                         
                    </h:selectManyCheckbox>
                </c:forEach>
                <h:commandButton value="#{msgs['page.content.passtest']}" action="#{test.passTest}" />

質問IDとanswerIdの連結には、concatを使用します。これは、JSF /JSPELとJavascriptの文字列の連結で見つかります

entry.key.questionIdしかし、私は内部の価値を得ることができませんitemValue="#{fnc:concat(ans.answer.answerId, entry.key.questionId)}"

理由がわかりません。

どこで間違いを犯すことができますか?そして、私はより多くの論理と単純な決定の同様の問題についていくつかの情報源に尋ねたいと思います。ありがとう

4

2 に答える 2

2

連結する必要はありません:

itemValue="#{fnc:concat(ans.answer.answerId, entry.key.questionId)}"

と同じくらい簡単かもしれません:

itemValue="#{ans.answer.answerId}, #{entry.key.questionId}"
于 2012-11-20T22:42:06.570 に答える
1

独自の方法を使用して連結してみませんか?concatenatorBeanメソッドを持つという名前のBeanを使用できます

String customConcat(String str1, String str2) {
   return str1+"_"+str2;
}

次に、getTest.xhtml独自の連結器を使用して問題を解決できます。

于 2012-11-17T18:22:53.087 に答える