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

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

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

    Knight of the round table

    wansong

    struts 1 校驗

    http://hi.baidu.com/ln_software/blog/item/54e0838021d7c3a90df4d227.html
    http://lucky16.javaeye.com/blog/450144
    http://www.javaeye.com/topic/154151

    如這樣的500錯誤:No input attribute for mapping path.  Validator要求頁面做驗證
    解決辦法一:
    在struts_config.xml里的<action里加入input
    解決辦法二:
    把struts_config.xml里的<action里的validator改成false



    Struts作為一個不停發展的開源項目,在頁面校驗這一塊采用了Jakarta的Commons項目的Validate,結合Struts的MVC體系,
    用起來確實不錯。建議校驗這部分在完成jsp后加入。
    原理:Struts的頁面校驗分兩種方法,一種是前臺生成Javascript,一種是后臺class。
          而出錯信息對應的也有兩種顯示方法,一種是彈出消息框,一種是在原頁面顯示。
          我個人比較喜歡彈出消息框這種,因為可以將焦點置到出錯的field中。
          所以我側重介紹如何實現這種。
          請按下列步驟一步一步進行,進行的時候思考它的做法。
         
    1     將Struts所需lib加入到項目lib路徑或服務器的lib路徑
          Struts1.1需要如下lib:struts-legacy.jar struts.jar jakarta-oro.jar commons-validator.jar
          commons-logging.jar commons-lang.jar commons-fileupload.jar commons-digester.jar commons-collections.jar
          commons-beanutils.jar(可以看到Struts1.1用了很多Commons項目的東東)
    2     將下載的Struts1.1的包中的webapps\struts-validator.war 中的validation.xml和validator-rules.xml
          拷到項目的WEB-INF路徑
          仔細研究一下這兩個文件,可以看到validator-rules.xml是提供一些常用的validation規則。
          目前提供了required,requiredif,minlength,maxlength,mask,byte,short,integer,long,float,
          double,date,range,intRange,floatRange,creditCard,email,
          我看了一下,只有mask不知道具體是干啥的,其他望文生義。(至于如何DIY一條自己的rule,俺還不會)
          重頭戲來了,修改validation.xml。可以看一下validation.xml結構
    validation.xml:     
    <?xml version="1.0" encoding="ISO-8859-1" ?>

    <!DOCTYPE form-validation PUBLIC
              "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
              "

    <form-validation>
       <global>
          <constant>
            <constant-name>phone</constant-name>
            <constant-value>^\(?(\d{3})\)?[-| ]?(\d{3})[-| ]?(\d{4})$</constant-value>
          </constant>
          <constant>
            <constant-name>zip</constant-name>
            <constant-value>^\d{5}\d*$</constant-value>
          </constant>
       </global>
       <formset>
          <constant>
            <constant-name>zip</constant-name>
            <constant-value>^\d{5}(-\d{4})?$</constant-value>
          </constant>

          <form    name="registrationForm">
             <field    property="firstName"
                 depends="required,mask,minlength">
                   <arg0 key="registrationForm.firstname.displayname"/>
                   <arg1 name="minlength" key="${var:minlength}" resource="false"/>
                         <var>
                           <var-name>mask</var-name>
                           <var-value>^\w+$</var-value>
                         </var>
                         <var>
                           <var-name>minlength</var-name>
                           <var-value>5</var-value>
                         </var>
             </field>
            ..........
          
          相信大家仔細一看就明白了,首先,可以定義一些用正則表達式表示的規則,這些規則還分全局和局部。
          這樣就可以DIY一些可以用正則表達式表示的規則了,例如下面就具體用到了自定義的規則:phone。
          ...
       <global>
          <constant>
            <constant-name>phone</constant-name>
            <constant-value>^\(?(\d{3})\)?[-| ]?(\d{3})[-| ]?(\d{4})$</constant-value>
          </constant>
       </global>
       ...  
          <field    property="mobile"
                 depends="mask">
                   <arg0 key="registrationForm.mobile.displayname"/>
                         <var>
                           <var-name>mask</var-name>
                           <var-value>${phone}</var-value>
                         </var>
          </field>
       ...
          這下也明白mask的作用了,原來它是專門用于自定義規則!
          然后就可以添加需要加validation的field了,格式如下:
          <formset>
          <form name="registrationForm">
             <field    property="firstName"
                 depends="required,mask,minlength">
                   <arg0 key="registrationForm.firstname.displayname"/>
                   <arg1 name="minlength" key="${var:minlength}" resource="false"/>
                         <var>
                           <var-name>mask</var-name>
                           <var-value>^\w+$</var-value>
                         </var>
                         <var>
                           <var-name>minlength</var-name>
                           <var-value>5</var-value>
                         </var>
             </field>
          </form>
          </formset>
         
    3     將需要加validation的formbean全部改成 extends ValidatorForm
    4     在struts-config.xml文件中加入一段代碼<plug-in></plug-in>,位置如下:
    ......
        <action name="performanceSearchForm" path="/performanceRptAction" scope="request" type="com.hp.elog2.action.report.PerformanceRptAction">
          <forward name="success" path="/FinalRpt.jsp" redirect="false" />
        </action>
      </action-mappings>
      <message-resources parameter="ApplicationResources" />
      <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
      </plug-in>
    </struts-config>

    5     在ApplicationResources.properties文件中加入如下內容:

    # Errors
    errors.header=Validation Error
    errors.required={0} is required.
    errors.minlength={0} can not be less than {1} characters.
    errors.maxlength={0} can not be greater than {1} characters.
    errors.invalid={0} is invalid.
    errors.byte={0} must be an byte.
    errors.short={0} must be an short.
    errors.integer={0} must be an integer.
    errors.long={0} must be an long.
    errors.float={0} must be an float.
    errors.double={0} must be an double.
    errors.date={0} is not a date.
    errors.range={0} is not in the range {1} through {2}.
    errors.creditcard={0} is not a valid credit card number.
    errors.email={0} is an invalid e-mail address.
          
          且注意在修改validation.xml時,如
           <arg0 key="registrationForm.firstname.displayname"/>
          則ApplicationResources.properties中要有對應的 registrationForm.firstname.displayname 值。
          這就可以實現出錯信息本地化。

    6     修改要加validation的jsp文件。兩處:
            1 在頁面的form標簽中加入onsubmit事件
            <html:form action="registration" onsubmit="return validateRegistrationForm(this);">
            2 在</body>之前加入一段代碼,內容如下:
            <html:javascript formName="registrationForm"/>
            這段代碼會自動生成上面的validateRegistrationForm(this)函數

    posted on 2010-09-22 22:08 w@ns0ng 閱讀(217) 評論(0)  編輯  收藏 所屬分類: Struts

    主站蜘蛛池模板: 亚洲AV综合色区无码一区| 国产精品无码一区二区三区免费| 亚洲精品成人在线| 国产亚洲一卡2卡3卡4卡新区| 操美女视频免费网站| 国产成人精品日本亚洲直接 | 一个人免费播放在线视频看片| 日韩视频免费在线| 久久久久亚洲AV无码去区首| 吃奶摸下高潮60分钟免费视频| 搜日本一区二区三区免费高清视频| 亚洲美女在线国产| 中文字幕在线免费视频| 亚洲精品国产精品乱码不卡√| 国产精品偷伦视频观看免费| 久久精品国产亚洲av麻豆色欲| 中文字幕亚洲免费无线观看日本| 亚洲成综合人影院在院播放| 成年人网站在线免费观看| WWW国产亚洲精品久久麻豆| 亚洲av麻豆aⅴ无码电影| 成人网站免费看黄A站视频| 亚洲国产精品不卡在线电影| 国产桃色在线成免费视频| 亚洲国产aⅴ成人精品无吗| 久久久无码精品亚洲日韩软件 | 亚洲人成网站看在线播放| 全免费一级午夜毛片| 黄页视频在线观看免费| 中文字幕日韩亚洲| 在线免费观看亚洲| 日韩欧美亚洲中文乱码| 亚洲中文字幕无码日韩| 国产在线jyzzjyzz免费麻豆| 1000部无遮挡拍拍拍免费视频观看| 国产成人精品日本亚洲直接| 亚洲精品成人久久久| 国产a视频精品免费观看| 男女交性无遮挡免费视频| 久久青青草原亚洲av无码app | 国产精品成人亚洲|