Chr*_*ews 3 validation ajax jsf-2
我开始学习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>
Run Code Online (Sandbox Code Playgroud)
CSS类"msgError"默认隐藏元素.
我想基本上具有在通过对数据库检查验证输入的"豆"类中的方法,则如果没有找到该值,取消隐藏的错误消息,或者如果它被找到,然后执行其执行的另一种方法实际的功能.
在我看来,它在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
}
Run Code Online (Sandbox Code Playgroud)
任何建议都会非常欢迎!谢谢!
您没有使用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>
Run Code Online (Sandbox Code Playgroud)
同
public void validateDataPoint(FacesContext context, UIComponent component, Object convertedValue) {
if (!dao.fieldExists((String) convertedValue)) {
throw new ValidatorException(new FacesMessage("Value not found in database."));
}
}
Run Code Online (Sandbox Code Playgroud)
这performFunctionality()必须通过命令按钮的action方法执行.
当验证失败(即ValidatorException抛出)时,消息将显示在<h:message>与输入组件关联的内容中,并且不会调用操作方法.或者,该validator属性也可以指向实现的值得满足的类javax.faces.validator.Validator.将<f:ajax>被添加到让一个ajax提交.
无论您何时学习JSF,请确保您还阅读了有关转换和验证的章节.不要过多考虑PHP/ASP/JSP/jQuery方式.JSF是一个基于MVC框架的完整组件.
| 归档时间: |
|
| 查看次数: |
4485 次 |
| 最近记录: |