JSF 2.0のカスタムバリデーター
この記事では、JSF 2.0でカスタムバリデーターを作成する方法を説明します
javax.faces.validator.Validatorインタフェース
-
`validate()`メソッドをオーバーライドします.
-
`@ FacesValidator`アノテーションを介して一意のバリデータIDを割り当てます.
-
`f:validator`を介してカスタムバリデータクラスをJSFコンポーネントに参照します.
タグ。
カスタムバリデータ名 “EmailValidator”を作成するための詳細ガイド – Java正規表現による電子メールアドレスの検証。
1.フォルダ構造
このプロジェクトのディレクトリ構造。

2.バリデータクラス
カスタムバリデータクラスを作成し、 `javax.faces.validator.Validator`インタフェースを実装します。
package com.mkyong;
import javax.faces.validator.Validator;
public class EmailValidator implements Validator{
//...
}
`validate()`メソッドをオーバーライドします。
public class EmailValidator implements Validator{
public void validate(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
//...
}
}
`@ FacesValidator`で一意のバリデータIDを割り当てます。
package com.mkyong;
import javax.faces.validator.Validator;
@FacesValidator("com.mkyong.EmailValidator")
public class EmailValidator implements Validator{
//...
}
完全なカスタムバリデータクラスを参照してください:
EmailValidator.java
package com.mkyong;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
@FacesValidator("com.mkyong.EmailValidator")
public class EmailValidator implements Validator{
private static final String EMAIL__PATTERN = "^[__A-Za-z0-9-]+(\\." +
"[__A-Za-z0-9-]+)** @[A-Za-z0-9]+(\\.[A-Za-z0-9]+)** " +
"(\\.[A-Za-z]{2,})$";
private Pattern pattern;
private Matcher matcher;
public EmailValidator(){
pattern = Pattern.compile(EMAIL__PATTERN);
}
@Override
public void validate(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
matcher = pattern.matcher(value.toString());
if(!matcher.matches()){
FacesMessage msg =
new FacesMessage("E-mail validation failed.",
"Invalid E-mail format.");
msg.setSeverity(FacesMessage.SEVERITY__ERROR);
throw new ValidatorException(msg);
}
}
}
上記はカスタムのバリデータークラスで、idは `com.mkyong.EmailValidator`です。
電子メールが無効な場合、 `FacesMessage`エラーメッセージを返します。
-
Note ** +電子メール正規表現パターンの詳細については、この「link://正規表現/正規表現付きの電子メールアドレスの使用方法/Javaでの電子メールの検証」を参照してください。正規表現]」の記事を参照してください。
3.マネージドBean
“user”という名前の通常のマネージドBeanですが、ここでは特別なものはありません。
package com.mkyong;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean(name="user")
@SessionScoped
public class UserBean implements Serializable{
String email;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
4. JSFページ
f:validator`タグの" validatorId
“属性を使用してカスタムバリデータのJSFコンポーネントを参照してください。
Spring DIをJSFカスタムバリデーターに変換するJSFカスタムバリデーターに
@ Autowired`が必要な場合は、
validatorId`の代わりに `binding`を使います。このポストリンクを読んでください://jsf2/spring-autowired-into-jsf-custom-validator/[Spring @ JSFカスタムバリデーターに帰属]
default.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
>
<h:body>
<h1>Custom validator in JSF 2.0</h1>
<h:form>
<h:panelGrid columns="3">
Enter your email :
<h:inputText id="email" value="#{user.email}"
size="20" required="true" label="Email Address">
<f:validator validatorId="com.mkyong.EmailValidator"/>
</h:inputText>
<h:message for="email" style="color:red"/>
</h:panelGrid>
<h:commandButton value="Submit" action="result"/>
</h:form>
</h:body>
</html>
result.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
>
<h:body>
<h1>Custom validator in JSF 2.0</h1>
<h:panelGrid columns="2">
Email Address :
<h:outputText value="#{user.email}"/>
</h:panelGrid>
</h:body>
</html>
5.デモ
カスタムバリデータを介して電子メールアドレスを検証します。電子メールアドレスが無効な場合は、エラーメッセージを返します。

ソースコードをダウンロードする
ダウンロードする – リンク://wp-content/uploads/2010/11/JSF-2-Custom-Validator-Example.zip[JSF-2-Custom-Validator-Example](10KB)