我只有一个想法,意识到获得用户的答案。我决定使用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}" />
对于concatination questionId with answerId我使用concat。我在Concatenate strings in JSF/JSP EL and Javascript
中找到了这个但我无法在 entry.key.questionId
itemValue="#{fnc:concat(ans.answer.answerId, entry.key.questionId)}"
的价值
我不明白为什么。
我在哪里可以犯错误?我想问一些关于更多逻辑和简单决定类似问题的来源。感谢
答案 0 :(得分:2)
您不需要连接:
itemValue="#{fnc:concat(ans.answer.answerId, entry.key.questionId)}"
可能很简单:
itemValue="#{ans.answer.answerId}, #{entry.key.questionId}"
答案 1 :(得分:1)
为什么不使用自己的方法连接?您可以使用名为concatenatorBean
的方法
String customConcat(String str1, String str2) {
return str1+"_"+str2;
}
然后在getTest.xhtml
中,您可以使用自己的连接器来解决问题。