我试图用db中的数据创建一个quizz,但我有点迷失。
我有3张桌子:
所以我编写了这段代码来显示每个问题及其答案:
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
我得到了&#34; quizzBean.quizzId&#34;通过GET参数。
h:selectOneRadio的值是我的Question实体中的selectedAnswerId属性,因此我尝试将其与用户选择的答案绑定。
所以我试图在提交按钮中传递quizz id以在bean中检查它们(@RequestScoped),但是点击提交按钮后quizz id为null ...
这里是按钮:
<p>Questions</p>
<ui:repeat value="#{questionBean.fetchQuestionsFromQuizz(quizzBean.fetchQuizz(quizzBean.quizzId))}" var="i" varStatus="current">
<p>#{i.question}</p>
<h:selectOneRadio value="#{i.selectedAnswerId}">
<f:selectItems value="#{answerBean.fetchAnswersFromQuestion(i)}" var="item"
itemLabel="#{item.answer}" itemValue="#{item.id}" />
</h:selectOneRadio>
</ui:repeat>
这是方法(简单的打印):
<h:commandLink value="Submit" action="#{questionBean.checkTheAnswers()}">
<f:setPropertyActionListener target="#{questionBean.fromQuizzId}" value="#{quizzBean.quizzId}" />
</h:commandLink>
那么你对quizzId为何为空有任何想法吗?
答案 0 :(得分:0)
你有一个requestScoped托管bean,你使用http GET方法传递quizzId,在这种情况下,你应该使用managedbean的@PostConstruct init方法初始化使用GET方法的值归档的quizzId。
@PostConstruct
public void init() {
try {
FacesContext facesContext = FacesContext.getCurrentInstance();
Map<String, String> params = facesContext.getExternalContext().getRequestParameterMap();
if (params.containsKey("quizzId") {
quizzId= params.get("quizzId");
....