JSFカスタム検証プログラムの実装
12868 ワード
WebアプリケーションのビューとしてJSPを使用する場合(通常はそうである)、次のコードに示すように、
ラベルのclassNameプロパティを使用して、検証プログラムのクラス名を指定するには、 。
ラベルを します. で した プログラムは、コンポーネントの がnullでないことを するためにJSFに み まれた プログラムです.JSFには くの み み プログラムが されていますが、 の プログラムを し、JSFコンポーネントに けることもできます.
<
faces:textentry_input
id
='name'>
='javax.faces.validator.RequiredValidator'/>
>
DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'
>
<
html
>
<
head
>
<
title
>
A Simple JavaServer Faces Application
title
>
head
>
<
body
>
@ taglib uri='http://java.sun.com/j2ee/html_basic/' prefix='faces' %>
<font size='4'>Please enter your name and password
<faces:usefaces>
<faces:form id='simpleForm' formName='simpleForm'>
<table>
<tr>
<td>Name:td>
<td>
<faces:textentry_input id='name'>
<faces:validator
className='com.sabreware.validators.NameValidator'/>
<faces:validator
className='javax.faces.validator.LengthValidator'/>
<faces:attribute
name='javax.faces.validator.LengthValidator.MINIMUM'
value='3'/>
faces:textentry_input>
td>
<td>
<faces:validation_message componentId='name'/>
td>
tr>
<tr>
<td>Password:td>
<td>
<faces:textentry_secret id='password'/>
td>
tr>
table>
<p><faces:command_button id='submit' commandName='Log In'/>
faces:form>
faces:usefaces>
body>
html>
JSP
ラベルは、 プログラムをJSFコンポーネントに けるために される.この 、 プログラムはユーザー を するカスタム プログラムとJSF プログラムであり、ユーザー が なくとも3 であることを する.
インベントリ2には、インベントリ1で されるカスタム プログラムがリストされています.
リスト2.WEB-INF/classes/com/sabreware/validators/nameValidator.java
package
com.sabreware.validators;
import
java.util.Iterator;
import
javax.faces.component.UIComponent;
import
javax.faces.component.AttributeDescriptor;
import
javax.faces.context.FacesContext;
import
javax.faces.context.Message;
import
javax.faces.context.MessageImpl;
import
javax.faces.validator.Validator;
public
class
NameValidator
implements
Validator
...
{ public AttributeDescriptor getAttributeDescriptor(String attributeName) ...{ return null; } public Iterator getAttributeNames() ...{ return null; } public void validate(FacesContext context, UIComponent component) ...{ String name = (String)component.getValue(); if(!"phillip".equalsIgnoreCase(name)) ...{ context.addMessage(component, new MessageImpl(Message.SEVERITY_ERROR, "bad username", "The username " + name + " is invalid")); } }}
javax.faces.validator.Validator , :
- void validate(FacesContext, UIComponent)
- Iterator getAttributeNames(String)
- AttributeDescriptor getAttributeDescriptor(String)
validate() 。 Validator ( )。 , , getAttributeDescriptor() getAttributeNames() null。
, validate() 。 ,validator() JSF 。 JSF Process Validations 。 ( JSF ),JSF Render Response 。 , Apply Model Values
( ):http://www.dmresearch.net/it-doc/1000000317/1000063243.php