概述
正则表达式匹配为空或者正整数:
^([0-9]{1}|[1-9]{1}[0-9]{0,}|)$
如果是表单做了值绑定,最好是绑定的字符串类型,否则可能被转化器将空字符串以null返回。
<p:dialog header="广告修改" widgetVar="updateDlg" resizable="true"
height="400" width="600" showEffect="fade" hideEffect="explode"
modal="false" appendTo="@(body)">
<h:form id="ad_form2">
<p:messages autoUpdate="true" />
<h:panelGrid id="p_update" columns="3" cellpadding="4"
style="margin:0 auto;">
<h:outputText value="标题:" />
<p:inputText id="title_update" value="#{adConfigBean.advo.title}"
required="true" label="标题" />
<h:message for="title_update" style="color:red" />
<h:outputText value="排序:" />
<p:inputText id="sort_update" value="#{adConfigBean.advo.sort}" label="排序" validatorMessage="错误的排序!">
<f:validateRegex pattern="^([0-9]{1}|[1-9]{1}[0-9]{0,}|)$" />
</p:inputText>
<h:message for="sort_update" style="color:red" />
<h:outputText value="广告URL:" />
<p:inputText id="adUrl_update" value="#{adConfigBean.advo.adUrl}"
required="false" label="广告链接" />
<h:message for="adUrl_update" style="color:red" />
<p:commandButton value="修改" title="Update"
action="#{adConfigBean.updateAd}" ajax="true" widgetVar="uSenBtn"
onstart="uSenBtn.disable()" oncomplete="uSenBtn.enable()"
validateClient="true">
</p:commandButton>
</h:panelGrid>
</h:form>
</p:dialog>
自定义验证
一。backing bean中写验证方法,在表单上绑定验证监听器
public void validateContent(ComponentSystemEvent event) {
FacesContext fc = FacesContext.getCurrentInstance();
UIComponent components = event.getComponent();
UIInput uiInputContent = (UIInput) components
.findComponent("content_update");
String content = uiInputContent.getLocalValue() == null ? ""
: uiInputContent.getLocalValue().toString();
if (content != null && !"".equals(content.trim())) {
boolean boo = ValidateUtil.validateUserVariable(variableArray,
content);
if (!boo) {
FacesMessage msg = new FacesMessage("邮件模板内容包含非法用户变量");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
fc.addMessage(null, msg);
fc.renderResponse();
}
}
}
<p:dialog header="重置邮件密码模板" widgetVar="et_updateDlg" resizable="false"
width="600" height="400" showEffect="fade" hideEffect="explode"
modal="true" appendTo="@(body)">
<h:form id="etcfg_form2">
<p:messages autoUpdate="true" globalOnly="false" />
<f:event listener="#{cfgBean.validateContent}" type="postValidate" />
<h:panelGrid id="etp_update" columns="2" cellpadding="4" style="margin:0 auto;">
<h:outputText value="邮件标题: " />
<p:inputText id="title_update" value="#{cfgBean.etmpvo.title}"
required="true" label="标题">
</p:inputText>
<h:outputText value="变量说明: " />
<h:outputText id="view_content"
value="#{cfgBean.etmpvo.editorContent}" width="350" escape="false" />
<h:outputText value="内容: " />
<p:editor id="content_update" value="#{cfgBean.etmpvo.content}"
width="350"
/>
<p:commandButton value="保存" icon="ui-icon-search" title="Update"
update=":display_etcfg" widgetVar="etcfgBtn"
onstart="etcfgBtn.disable()" oncomplete="etcfgBtn.enable()"
action="#{cfgBean.updateEtmp}" ajax="true" validateClient="true">
</p:commandButton>
<h:inputHidden value="#{cfgBean.cfgvo.id}"></h:inputHidden>
</h:panelGrid>
</h:form>
</p:dialog>
二。自定义验证器
<h:outputText value="开始时间:" />
<p:calendar value="#{chartBean.startDate}" pattern="yyyy-MM-dd" required="true" id="startTimeId"
label="开始时间" binding="#{startDateComponent}"/>
<h:outputText value="结束时间:" />
<p:calendar value="#{chartBean.endDate}" pattern="yyyy-MM-dd" required="true" label="结束时间">
<f:validator validatorId="twoTimeValidator" />
<f:attribute name="startDate" value="#{startDateComponent}" />
</p:calendar>
package com.hshbic.cloud.m2m.framework.sysmgmt.view.validator;
import java.io.Serializable;
import java.util.Date;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
public class TwoTimeValidator implements Validator, Serializable {
private static final long serialVersionUID = 4303300874423328770L;
@Override
public void validate(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
UIInput startDateComponent = (UIInput) component.getAttributes().get("startDate");
Date startDate = (Date) startDateComponent.getValue();
if (startDate == null || value == null) {
return; // Let required="true" handle.
}
Date endDate = (Date)value;
if (startDate.after(endDate)) {
startDateComponent.setValid(false);
throw new ValidatorException(new FacesMessage(
FacesMessage.SEVERITY_ERROR, "开始时间不能晚于结束时间", null));
}
}
}
faces-config.xml配置验证器:
<validator>
<validator-id>twoTimeValidator</validator-id>
<validator-class>
com.hshbic.cloud.m2m.framework.sysmgmt.view.validator.TwoTimeValidator</validator-class>
</validator>
最后
以上就是腼腆冬日为你收集整理的JSF + Primefaces表单验证的全部内容,希望文章能够帮你解决JSF + Primefaces表单验证所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复