溫故知新:struts2_08其他功能:表單驗證

          其實,struts2的表單驗證感覺真的好雞肋,要不是為了系統的整理一下struts2的功能,根本不會去想它,抽取一個官方的例子吧。

          struts2的驗證分為客戶端和服務端,可以通過注解和配置文件的方式去配置,以下是通過配置文件的方式
          定義一個Action,自定義的Action必須繼承ActionSupport才能使得校驗生效
           1 package validation;
           2 
           3 import java.sql.Date;
           4 
           5 import com.opensymphony.xwork2.ActionSupport;
           6 
           7 
           8 
           9 public class FieldValidatorsExampleAction extends ActionSupport {
          10 
          11     private static final long serialVersionUID = -4829381083003175423L;
          12 
          13     private String requiredValidatorField = null;
          14     private String requiredStringValidatorField = null;
          15     private Integer integerValidatorField = null;
          16     private Date dateValidatorField = null;
          17     private String emailValidatorField = null;
          18     private String urlValidatorField = null;
          19     private String stringLengthValidatorField = null;
          20     private String regexValidatorField = null;
          21     private String fieldExpressionValidatorField = null;
          22 
          23     public String add(){
          24         System.out.println("Add Execute");
          25         return "success";
          26     }
          27     
          28     public String validateAdd(){
          29         System.out.println("validateAdd Execute");
          30         return "input";
          31     }
          32     
          33     public String submit() throws Exception {
          34         return "success";
          35     }
          36 
          37     public String input() throws Exception {
          38         return "input";
          39     }
          40 
          41     //get/set略
          42 }
          43 
          之后在Action的同級目錄下新增客戶端校驗規則:FieldValidatorsExampleAction-submitClientSideValidationExample-validation.xml
           1 <?xml version="1.0" encoding="ISO-8859-1"?>
           2 
           3 <!DOCTYPE validators PUBLIC
           4           "-//Apache Struts//XWork Validator 1.0//EN"
           5           "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
           6           
           7 <validators>
           8     <field name="requiredValidatorField">
           9         <field-validator type="required">
          10             <message><![CDATA[ required ]]></message>
          11         </field-validator>
          12     </field>
          13     <field name="requiredStringValidatorField">
          14         <field-validator type="requiredstring">
          15             <param name="trim">true</param>
          16             <message key="i18n.nothing.here"><![CDATA[ required and must be string ]]></message>
          17         </field-validator>
          18     </field>
          19     <field name="requiredStringValidatorField">
          20         <field-validator type="requiredstring">
          21             <param name="trim">true</param>
          22             <message key="i18n.requiredstring"><![CDATA[ required and must be string ]]></message>
          23         </field-validator>
          24     </field>
          25     <field name="integerValidatorField">
          26         <field-validator type="int">
          27             <param name="min">1</param>
          28             <param name="max">10</param>
          29             <message><![CDATA[ must be integer min 1 max 10 if supplied ]]></message>
          30         </field-validator>
          31     </field>
          32     <field name="dateValidatorField">
          33         <field-validator type="date">
          34             <param name="min">01/01/1990</param>
          35             <param name="max">01/01/2000</param>
          36             <message><![CDATA[ must be a min 01-01-1990 max 01-01-2000 if supplied ]]></message>
          37         </field-validator>
          38     </field>
          39     <field name="emailValidatorField">
          40         <field-validator type="email">
          41             <message><![CDATA[ must be a valid email if supplied ]]></message>
          42         </field-validator>
          43     </field>
          44     <field name="urlValidatorField">
          45         <field-validator type="url">
          46             <message><![CDATA[ must be a valid url if supplied ]]></message>
          47         </field-validator>
          48     </field>
          49     <field name="stringLengthValidatorField">
          50         <field-validator type="stringlength">
          51             <param name="maxLength">4</param>
          52             <param name="minLength">2</param>
          53             <param name="trim">true</param>
          54             <message><![CDATA[ must be a String of a specific greater than 1 less than 5 if specified ]]></message>
          55         </field-validator>
          56     </field>
          57     <field name="regexValidatorField">
          58         <field-validator type="regex">
          59             <param name="regex">.*\.txt</param>
          60             <message><![CDATA[ regexValidatorField must match a regexp (.*\.txt) if specified ]]></message>
          61         </field-validator>
          62     </field>
          63     <field name="fieldExpressionValidatorField">
          64         <field-validator type="fieldexpression">
          65             <param name="expression">(fieldExpressionValidatorField == requiredValidatorField)</param>
          66             <message><![CDATA[ must be the same as the Required Validator Field if specified ]]></message>
          67         </field-validator>
          68     </field>
          69 </validators>
          70 
          還有服務端校驗規則:FieldValidatorsExampleAction-submitFieldValidatorsExamples-validation.xml
           1 <?xml version="1.0" encoding="ISO-8859-1"?>
           2 
           3 <!DOCTYPE validators PUBLIC 
           4           "-//Apache Struts//XWork Validator 1.0//EN"
           5           "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
           6           
           7 <validators>
           8     <field name="requiredValidatorField">
           9         <field-validator type="required">
          10             <message><![CDATA[ required ]]></message>
          11         </field-validator>
          12     </field>
          13     <field name="requiredStringValidatorField">
          14         <field-validator type="requiredstring">
          15             <param name="trim">true</param>
          16             <message><![CDATA[ required and must be string ]]></message>
          17         </field-validator>
          18     </field>
          19     <field name="integerValidatorField">
          20         <field-validator type="int">
          21             <param name="min">1</param>
          22             <param name="max">10</param>
          23             <message><![CDATA[ must be integer min 1 max 10 if supplied ]]></message>
          24         </field-validator>
          25     </field>
          26     <field name="dateValidatorField">
          27         <field-validator type="date">
          28             <param name="min">01/01/1990</param>
          29             <param name="max">01/01/2000</param>
          30             <message><![CDATA[ must be a min 01-01-1990 max 01-01-2000 if supplied ]]></message>
          31         </field-validator>
          32     </field>
          33     <field name="emailValidatorField">
          34         <field-validator type="email">
          35             <message><![CDATA[ must be a valid email if supplied ]]></message>
          36         </field-validator>
          37     </field>
          38     <field name="urlValidatorField">
          39         <field-validator type="url">
          40             <message><![CDATA[ must be a valid url if supplied ]]></message>
          41         </field-validator>
          42     </field>
          43     <field name="stringLengthValidatorField">
          44         <field-validator type="stringlength">
          45             <param name="maxLength">4</param>
          46             <param name="minLength">2</param>
          47             <param name="trim">true</param>
          48             <message><![CDATA[ must be a String of a specific greater than 1 less than 5 if specified ]]></message>
          49         </field-validator>
          50     </field>
          51     <field name="regexValidatorField">
          52         <field-validator type="regex">
          53             <param name="regex"><![CDATA[ [^<>]+ ]]></param>
          54             <message><![CDATA[ regexValidatorField must match a regexp (.*\.txt) if specified ]]></message>
          55         </field-validator>
          56     </field>
          57     <field name="fieldExpressionValidatorField">
          58         <field-validator type="fieldexpression">
          59             <param name="expression">(fieldExpressionValidatorField == requiredValidatorField)</param>
          60             <message><![CDATA[ must be the same as the Required Validator Field if specified ]]></message>
          61         </field-validator>
          62     </field>
          63 </validators>
          輸入頁面:fieldValidatorsExample.jsp
           1 <%@ page language="java" contentType="text/html; charset=UTF-8"
           2     pageEncoding="UTF-8"%>
           3 <%@taglib prefix="s" uri="/struts-tags" %>
           4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
           5 
           6 <html>
           7 <head>
           8     <title>Struts2 Showcase - Validation - Field Validators Example</title>
           9 </head>
          10 <body>
          11 
          12 <div class="page-header">
          13     <h1>Field Validation Examples</h1>
          14 </div>
          15 
          16 <div class="container-fluid">
          17     <div class="row-fluid">
          18         <div class="span12">
          19 
          20             <h3>All Field Errors Will Appear Here</h3>
          21             <s:fielderror/>
          22             <hr/>
          23 
          24             <h3>Field Error due to 'Required String Validator Field' Will Appear Here</h3>
          25             <s:fielderror>
          26                 <s:param value="%{'requiredStringValidatorField'}"/>
          27             </s:fielderror>
          28             <hr/>
          29 
          30             <h3>Field Error due to 'String Length Validator Field' Will Appear Here</h3>
          31             <s:fielderror>
          32                 <s:param>stringLengthValidatorField</s:param>
          33             </s:fielderror>
          34             <hr/>
          35 
          36             <s:form action="submitFieldValidatorsExamples" namespace="/validation" method="POST" theme="xhtml">
          37                 <s:textfield label="Required Validator Field" name="requiredValidatorField"/>
          38                 <s:textfield label="Required String Validator Field" name="requiredStringValidatorField"/>
          39                 <s:textfield label="Integer Validator Field" name="integerValidatorField"/>
          40                 <s:textfield label="Date Validator Field" name="dateValidatorField"/>
          41                 <s:textfield label="Email Validator Field" name="emailValidatorField"/>
          42                 <s:textfield label="URL Validator Field" name="urlValidatorField"/>
          43                 <s:textfield label="String Length Validator Field" name="stringLengthValidatorField"/>
          44                 <s:textfield label="Regex Validator Field" name="regexValidatorField"/>
          45                 <s:textfield label="Field Expression Validator Field" name="fieldExpressionValidatorField"/>
          46                 <s:submit label="Submit" cssClass="btn btn-primary"/>
          47             </s:form>
          48             
          49             <s:form action="addFieldValidatorsExamples" namespace="/validation" method="POST" theme="xhtml">
          50                 <s:submit value="add"/>
          51             </s:form>
          52 
          53         </div>
          54     </div>
          55 </div>
          56 </body>
          57 </html>
          58 
          結果頁面:successFieldValidatorsExample.jsp
           1 <%@ page language="java" contentType="text/html; charset=UTF-8"
           2     pageEncoding="UTF-8"%>
           3 <%@taglib prefix="s" uri="/struts-tags" %>
           4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
           5 
           6 <html>
           7 <head>
           8     <title>Struts2 Showcase - Validation - Success Field Validators Example</title>
           9     <s:head/>
          10 </head>
          11 <body>
          12 
          13 <div class="page-header">
          14     <h1>Success !</h1>
          15 </div>
          16 
          17 <div class="container-fluid">
          18     <div class="row-fluid">
          19         <div class="span12">
          20 
          21             <table class="table table-striped table-bordered table-hover table-condensed">
          22             <tr>
          23                 <td>Required Validator Field:</td>
          24                 <td><s:property value="requiredValidatorField" /></td>
          25             </tr>
          26             <tr>
          27                 <td>Required String Validator Field:</td>
          28                 <td><s:property value="requiredStringValidatorField" /></td>
          29             </tr>
          30             <tr>
          31                 <td>Integer Validator Field: </td>
          32                 <td><s:property value="integerValidatorField" /></td>
          33             </tr>
          34             <tr>
          35                 <td>Date Validator Field: </td>
          36                 <td><s:property value="dateValidatorField" /></td>
          37             </tr>
          38             <tr>
          39                 <td>Email Validator Field: </td>
          40                 <td><s:property value="emailValidatorField" /></td>
          41             </tr>
          42             <tr>
          43                 <td>String Length Validator Field: </td>
          44                 <td><s:property value="stringLengthValidatorField" /></td>
          45             </tr>
          46             <tr>
          47                 <td>Regex Validator Field: <s:property value="regexValidatorField" /></td>
          48                 <td>Field Expression Validator Field: <s:property value="fieldExpressionValidatorField" /></td>
          49             </tr>
          50         </table>
          51         
          52         </div>
          53     </div>
          54 </div>
          55 </body>
          56 </html>
          57 
          struts.xml:
           1 <?xml version="1.0" encoding="UTF-8" ?>
           2 <!DOCTYPE struts PUBLIC
           3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
           4     "http://struts.apache.org/dtds/struts-2.3.dtd">
           5     
           6 <struts>
           7 
           8     <package name="validationExamples" extends="struts-default" namespace="/validation" >
           9 
          10         <!-- ======================== -->
          11         <!-- === Field Validators === -->
          12         <!-- ======================== -->
          13         
          14         <action name="showFieldValidatorsExamples" class="validation.FieldValidatorsExampleAction" method="input">
          15             <result name="input" type="dispatcher">/fieldValidatorsExample.jsp</result>
          16         </action>
          17         
          18         <action name="submitFieldValidatorsExamples" class="validation.FieldValidatorsExampleAction" method="submit">
          19             <result name="input" type="dispatcher">/fieldValidatorsExample.jsp</result>
          20             <result type="dispatcher">/successFieldValidatorsExample.jsp</result>
          21         </action>
          22         
          23         <action name="addFieldValidatorsExamples" class="validation.FieldValidatorsExampleAction" method="add">
          24             <result name="input" type="dispatcher">/successFieldValidatorsExample.jsp</result>
          25         </action>
          26                 
          27     </package>
          28 </struts>
          29     
          30 

          個人感覺這個校驗框架做得比較笨重,很多配置,而且必須要配合struts2的標簽才可以使用,顯得很不靈活。如果需要使用struts2的校驗功能,我們或許可以選擇他提供的另一種辦法,就是針對某個方法的校驗,比如方法add,自定義一個方法validateAdd,那么執行add方法之前會自動執行validateAdd方法進行自定義的校驗,同理其他方法就需要定義以“validate”+“方法名”(大寫首字母)來命名的方法來校驗,校驗完畢之后你可以選擇使用在ActionFieldError中添加錯誤信息,配合struts2的標簽來顯示,或者自行處理。

          posted on 2014-11-03 09:50 都較瘦 閱讀(150) 評論(0)  編輯  收藏 所屬分類: MVCFramework

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          公告

          博客定位:囿于目前的水平,博客定位在記錄自己的學習心得和隨手的練習

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 象州县| 汾西县| 涟水县| 景宁| 兴仁县| 疏附县| 黎平县| 舒兰市| 桃园县| 博兴县| 延边| 湘西| 体育| 临朐县| 榕江县| 高陵县| 玉龙| 镇远县| 增城市| 阳谷县| 松原市| 庆阳市| 韩城市| 耒阳市| 沭阳县| 镇安县| 恩施市| 怀宁县| 鄂尔多斯市| 萝北县| 巨野县| 沈阳市| 宜都市| 唐海县| 资中县| 永年县| 石家庄市| 平南县| 斗六市| 时尚| 沽源县|