NetBeans中JSF应用开发(5)

创建自定义验证器
如果标准的 JSF 验证器不能满足您的要求,你可以编写自己的验证器。在我们的例子中,我们将编写一个验证器来验证一个字符串是否是一个合法的 email 。要创建一个自定义验证器,需要创建一个实现 javax.faces.validator.Validator 接口的类,并在 faces-config.xml 中配置,可以通过 <f:validator> 标记来使用验证器。
1. 右键点击工程节点,然后选择 New > Java Class ,把类命名为 EmailValidator ,把这个类放在包 astrologer.validate 中,然后点击 Finish
2. 在类的声明中,实现 Validator ,如下:
public class EmailValidator implements Validator {
3. 使用提示来实现 validate 方法。
4. 修改方法的签名,然后增加下面的代码:
 public void validate(FacesContext facesContext,
 UIComponent uIComponent, Object value) throws ValidatorException {
 //Get the component's contents and cast it to a String
 String enteredEmail = (String)value;
 //Set the email pattern string
 Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
 //Match the given string with the pattern
 Matcher m = p.matcher(enteredEmail);
 //Check whether match is found
 boolean matchFound = m.matches();
 if (!matchFound) {
 FacesMessage message = new FacesMessage();
 message.setDetail("Email not valid - The email must be in the format 
<!--
var user = "&#121;&#111;&#117;&#114;&#110;&#97;&#109;&#101;";
var domain = "&#121;&#111;&#117;&#114;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;";
var at = "&#x40;";
document.write(user + at + domain);
//-->
yourname
@
yourdomain.com
");
 message.setSummary("Email not valid - The email must be in the format 
<!--
var user = "&#121;&#111;&#117;&#114;&#110;&#97;&#109;&#101;";
var domain = "&#121;&#111;&#117;&#114;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;";
var at = "&#x40;";
document.write(user + at + domain);
//-->
yourname
@
yourdomain.com
");
 message.setSeverity(FacesMessage.SEVERITY_ERROR);
 throw new ValidatorException(message);
 }
 }
5. 使用 Alt+Shift+F 添加必须的 import 语句。 ( 您应该选择引入 java.util.regex.Matcher , java.util.regex.Pattern and javax.faces.application.FacesMessage .)
6. 打开 faces-config.xml ,然后添加下面的代码:
 ...
 </application>
 <validator>
 <validator-id>astrologer.EmailValidator</validator-id>
 <validator-class>astrologer.validate.EmailValidator</validator-class>
 </validator>
</faces-config>
7. 打开 greeting.jsp ,然后添加 email 域:
 ...
 <p>Enter your name: <h:inputText value="#{UserBean.name}"
 id="name" required="true"/>
 <h:message for="name" /></p>
 <p>Enter your email: <h:inputText value="email"
 id="email" required="true">
 <f:validator validatorId="astrologer.EmailValidator" />
 </h:inputText>
 <h:message for="email" /></p>
 <p>Enter your birthday: <h:inputText value="#{UserBean.birthday}"
 id="birthday" required="true">
 ...
8. 运行工程,如果你输入了一个无效的 email ,你将会得到下面的错误:
关于自定义验证器参考书上 188 页。
书:《 Java EE 5 实用教程》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值