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