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)