如何比较数据库和用户输入中的字符串?

时间:2018-12-13 13:55:20

标签: java jsf

我正在尝试做一份调查问卷。我正在从数据库中检索问题和选择。我在$_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>

1 个答案:

答案 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