1

我只有一个想法,即实现获得用户的答案。我决定使用List<String> questionsWithAnswers并放入此列表对,例如“1_1”、“1_2”、“1_3”、“2_1”。像这样的东西。但即使有这个想法,我也有问题。同样重要的是,我将使用网络服务(例如,使用地图作为保存对问题和答案的结构是一个限制)。

********我的豆********

    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}" />

对于带有 answerId 的连接 questionId,我使用 concat。我在 JSF/JSP EL 和 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 回答