我正在尝试做一份调查问卷。我正在从数据库中检索问题和选择。我在$_POST['longitude']
内使用h:inputText
。但是,当我尝试获取答案时,它只会重复最后一个答案。我刚开始使用JSF,希望有人可以帮助我。谢谢!
这是JSF:
ui:repeat
这是豆子:
<h:body>
<h:outputLabel>Examination</h:outputLabel>
<h:form>
<ui:repeat var="item" value="#{bean.q}" varStatus="status">
<tr>
<td>
<br/>
#{status.index+1}.
#{item.question}<br/>
A. #{item.ans_1}<br/>
B. #{item.ans_2}<br/>
C. #{item.ans_3}<br/>
D. #{item.ans_4}<br/>
<h:outputLabel value="Answer:" />
<h:inputText value="#{bean.answer}" required="true">
<f:validateLength maximum="1"/>
<f:validateRegex pattern="(^[_A-D]$)" />
</h:inputText>
<br/>
</td>
</tr>
</ui:repeat>
<br/>
<h:commandButton id="btn" value="Check" action="#{bean.check}"/>
</h:form>
</h:body>
答案 0 :(得分:1)
1)
实际上,您有多个+----+--------+
| ID | Result |
+----+--------+
| 1 | def |
| 2 | hello |
| 3 | hi |
| 4 | 123 |
+----+--------+
指向同一个字段inputTexts
。提交表单时,每个inputTexts都会调用#{bean.answer}
,最终您在该字段中拥有最后一个bean.setAnswer(..)
的值。
在您的inputText
类中添加字段:
Return
并将您的输入更改为public class Return {
...
private String userAnswerInput;
public void setUserAnswerInput(..){..};
public String getUserAnswerInput(){..};
}
这样,您将获得来自<h:inputText value="#{item.userAnswerInput}" ...>
实例中的用户答案,这些实例分别与所问的问题相对应。
2)
您必须修改Return
方法以遍历check()
实例列表。
3)
您不应在getter中建立Return
实例的列表,因为它会被多次调用。而是在用Return
注释的separte公共方法中创建列表。吸气剂应减少为@PostContruct
。