<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    溫故知新: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 都較瘦 閱讀(147) 評論(0)  編輯  收藏 所屬分類: MVCFramework

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

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

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久国产亚洲精品无码| 免费人成在线观看播放a| 在线观看免费毛片| 手机永久免费的AV在线电影网| 国产亚洲精品xxx| 毛色毛片免费观看| 亚洲啪啪免费视频| 亚洲国产精品无码第一区二区三区| 亚洲女同成人AⅤ人片在线观看| 无人在线观看免费高清| 亚洲av午夜精品一区二区三区| 国产啪精品视频网站免费尤物 | 成年轻人网站色免费看| 免费人成网站永久| 亚洲日本香蕉视频| 亚洲区日韩区无码区| 国产在线观看麻豆91精品免费| 午夜在线免费视频 | 亚洲综合激情视频| 最近中文字幕2019高清免费| 免费播放美女一级毛片| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲女子高潮不断爆白浆| 中文字幕无码视频手机免费看| 色欲aⅴ亚洲情无码AV| 91在线亚洲精品专区| 亚洲国产精品尤物YW在线观看| 免费下载成人电影| 免费看搞黄视频网站| 免费精品国自产拍在线播放| 亚洲一区二区三区久久| 亚洲av永久无码精品秋霞电影影院 | 一级一片免费视频播放| 亚洲日本久久一区二区va| 亚洲αv久久久噜噜噜噜噜| 免费一级毛片女人图片| 国产精品免费久久| 久久亚洲精品无码av| 亚洲第一成人在线| 亚洲毛片无码专区亚洲乱| 亚洲国产成人高清在线观看|