gpt4 book ai didi

JSF 2.0 中的 AJAX onSubmit 验证

转载 作者:行者123 更新时间:2023-12-01 04:39:19 24 4
gpt4 key购买 nike

我开始学习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."));
}
}

那个performFunctionality()必须由命令按钮的操作方法执行。

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

另见:

无论您在何处学习了 JSF,请确保您还阅读了有关转换和验证的章节。不要想太多 PHP/ASP/JSP/jQuery 方式。 JSF 是一个成熟的基于组件的 MVC 框架。

关于JSF 2.0 中的 AJAX onSubmit 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9721547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com