繁体   English   中英

JSF 2.0中的AJAX onSubmit验证

[英]AJAX onSubmit validation in JSF 2.0

我开始学习JSF2.0,并遇到了一个问题。 有关如何进行的任何建议都将受到欢迎。

为简单起见,我重命名了表单元素和类。

我有一个表格,例如:

<h:form id="frmSearch">
    <h:inputText id="dataPoint1" value="#{bean.dataPoint1}"/>
    <div id="dataPoint1Error" class="msgError">Value not found in database.</div>

    <h:inputText id="dataPoint2" value="#{bean.dataPoint2}"/>
    <div id="dataPoint2Error" class="msgError">Value not found in database.</div>

    <h:commandButton action="#{bean.validate}" type="submit" value="Search"/>
</h:form>

CSS类“msgError”默认隐藏元素。

我想在“bean”类中基本上有一个方法,通过检查数据库来验证输入,然后如果找不到该值,取消隐藏错误消息,或者如果找到它,则执行另一个执行的方法实际的功能。

在我看来,它在Java中的工作方式有点类似(原谅任何语法错误,只需按照我的想法输入):

@ManagedBean
public class Bean {
    private String dataPoint1 = "";
    private String dataPoint2 = "";

    public boolean validate() {
        if(dao.fieldExists(this.dataPoint1) && dao.fieldExists(this.dataPoint2)) { //check the database
            performFunctionality();
            return true;
        }
        else {
            return false; //and show error div on screen
        }
    }        

    public void performFunctionality() {
        //do whatever
    }

    //getters and setters
}

任何建议都会非常欢迎! 谢谢!

您没有使用JSF内置验证工具。 利用它。

这是它的样子:

<h:form id="frmSearch">
    <h:inputText id="dataPoint1" value="#{bean.dataPoint1}" validator="#{bean.validateDataPoint}" />
    <h:message for="dataPoint1" />

    <h:inputText id="dataPoint2" value="#{bean.dataPoint2}" validator="#{bean.validateDataPoint}" />
    <h:message for="dataPoint2" />

    <h:commandButton action="#{bean.performFunctionality}" value="Search">
        <f:ajax execute="@form" render="@form" />
    </h:commandButton>
</h:form>

public void validateDataPoint(FacesContext context, UIComponent component, Object convertedValue) {
    if (!dao.fieldExists((String) convertedValue)) {
        throw new ValidatorException(new FacesMessage("Value not found in database."));
    }
}        

必须通过命令按钮的action方法执行performFunctionality()

当验证失败时(即抛出ValidatorException ),消息将显示在与输入组件关联的<h:message>中,并且不会调用action方法。 或许, validator属性也可以指向一个实现javax.faces.validator.Validator的值得满足的类。 添加了<f:ajax>以使其成为ajax提交。

也可以看看:

无论您何时学习JSF,请确保您还阅读了有关转换和验证的章节。 不要过多考虑PHP / ASP / JSP / jQuery的方式。 JSF是一个基于MVC框架的完整组件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM