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

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

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

    1. validation.xml 中的Resourse屬性
    ------------------------------------------------------------------------------
         <field property="username" depends="maxlength">
            <arg0 name="maxlength" key="${var:maxlength}" resource="false" />
            <var>
              <var-name>maxlength</var-name>
              <var-value>10</var-value>
            </var>
          </field>
    ------------------------------------------------------------------------------

    來,我們將它支解掉。:)  好象沒有什么好說的。很簡單。這是某個form下的一個properties的標準寫法。其中我們要重視一下這句話: <arg0 name="maxlength" key="${var:maxlength}" resource="false" /> , resource屬性指的是:是從資源文件里面讀key的值嗎? 
                                      if (resource == "false") {
                                            請取當前定義的變量的值。[因為為false的時候,因為得必須得給個值來組裝錯誤信息,因為此時我們不會到消息資源文件里提取值]
                                      } else if (resource == "true) {
                                           請到資源文件里提取用來組裝錯誤消息的值.
                                     }
    你會問:如果我不指定resourse的值怎么樣?默認是true,即:默認下它會去讀properties文件里面的值。 (這似乎與java的boolean的默認是false有點違背),如果我沒有配呢?那么是null.

    當然我也做了一個實驗證明了這點:

    properties file tips
    ------------------------------------------------------------------------------
    errors.maxlength = The length of the password can not surpass {0}
    ------------------------------------------------------------------------------
    validation.xml tips :
    ------------------------------------------------------------------------------
         <field property="username" depends="maxlength">
            <arg0 name="maxlength" key="${var:maxlength}" resource="false" />
            <var>
              <var-name>maxlength</var-name>
              <var-value>10</var-value>
            </var>
          </field>
    ------------------------------------------------------------------------------
    如果username的長度超過10的話,那么打印的是:The length of the password can not surpass 10

    resouse屬性改成true,
    properties file tips
    ------------------------------------------------------------------------------
    errors.maxlength = The length of the password can not surpass {0}
    username.maxlength  = 10
    ------------------------------------------------------------------------------
    validation.xml tips :
    ------------------------------------------------------------------------------
         <field property="username" depends="maxlength">
            <arg0 name="maxlength" key="username.maxlength" resource="true" />
            <var>
              <var-name>maxlength</var-name>
              <var-value>10</var-value>
            </var>
          </field>
    ------------------------------------------------------------------------------
    這樣我們也能達到同樣的效果。Right? 但是誰愿意呢? 只是我這樣寫似乎更加容易理解吧.并且這樣做就失去了validation的某些特別的功效,你得為每個重新在資源文件里寫一條message,不值得。

    2. validation.xml 中的msg屬性.
    官方資料:[The default error message for a pluggable validator can be overriden with the msg element. So instead of using the msg attribute for the mask validator to generate the error message the msg attribute from the field will be used if the name of the field's name attribute matches the validator's name attribute.]后面的例子我也就沒有給出來,那么這句話到底在肌理哇啦個什么呢? 先看一小段代碼:
    ------------------------------------------------------------------------------------------------
    <field property="username" depends="maxlength">
        <arg0 name="maxlength" key="${var:maxlength}" resource="false" />
        <var>
         <var-name>maxlength</var-name>
         <var-value>10</var-value>
        </var>
       </field>
    ------------------------------------------------------------------------------------------------
    再強調一遍:validation的錯誤信息是這樣組裝的:通過arg0 - arg3等來和資源文件里面的并且消息名字在validator-rule.xml定義好的規則所對應的消息來合成的。validator-rule.xml所定義的msg是面向所有的該規則的錯誤消息,每個form field可以通過arg0-arg3來定制自己的消息(這個我提到過)

    如果我們加入msg消息到filed標簽下面:

    ------------------------------------------------------------------------------------------------
    <field property="username" depends="maxlength">
        <msg name="maxlength" key="msg.maxlength" />
        <arg0 name="maxlength" key="${var:maxlength}" resource="false" />
        <var>
         <var-name>maxlength</var-name>
         <var-value>10</var-value>
        </var>
       </field>
    ------------------------------------------------------------------------------------------------
    那么此時的maxlength在規則里面的msg將會被<field>里面的msg覆蓋,也就是說<arg0>的定義形同虛設,更會無視resourse屬性的false or true;

    3.幾個規則(rules)作用于同一個form的屬性上面
    ------------------------------------------------------------------------------------------------
    <field property="username" depends="required,maxlength,minlength">
        <arg0 name="maxlength" key="${var:maxlength}" resource="false" />
        <arg1 name="required" key="prompt.username" />
        <arg2 name="minlength" key="${var:minlength}" resource="false" />
        <var>
         <var-name>maxlength</var-name>
         <var-value>10</var-value>
        </var>
        <var>
         <var-name>minlength</var-name>
         <var-value>3</var-value>
        </var>
       </field>
    ------------------------------------------------------------------------------------------------
    如果很多約束針對某一個form的屬性,我們可以這樣寫,當然如果你非要分開寫也可以。那么在xml文件中一個form的field就有多條記錄.
    這里有一點需要注意一下:<arg0><arg1><arg2>在這里定義了以后,別的form的屬性也要按照這種順序來,也就是:<arg0>對應的是 maxlength. <arg1>對應的是minlength.<arg2>對應的是 requried.為什么這樣做?
    因為在我們的properties文件中是寫死的。如果不這樣做,那么就會出現得到null值的錯誤啦.
    ------------------------------------------------------------------------------------------------
    errors.required ={1} is required.
    errors.maxlength = The length of the password can not surpass {0}
    errors.minlength = The length of the password can not shorter than {2}
    ------------------------------------------------------------------------------------------------


    補充一下validwhen的用法

    <field property="emailAddress" depends="validwhen">

    <arg0 key="userinfo.emailAddress.label"/>

    <var>

    <var-name>test</var-name>

    <var-value>((sendNewsletter == null) or (*this* != null))</var-value>

    </var>

    </field>

    上面定義的意思是:如果通訊地址是空或不空時這個字段時有效的

    posted on 2006-09-23 16:44 lzj520 閱讀(368) 評論(0)  編輯  收藏 所屬分類: Struts1
    主站蜘蛛池模板: 中文字幕不卡免费视频| mm1313亚洲国产精品无码试看| 香蕉国产在线观看免费| 国产在线19禁免费观看国产| 亚洲中文精品久久久久久不卡| 国产免费的野战视频| 亚洲大香人伊一本线| 97在线观免费视频观看| 亚洲av极品无码专区在线观看| 亚洲成电影在线观看青青| 最近免费中文字幕大全免费版视频| 久久青青草原亚洲AV无码麻豆 | 亚洲国产精品成人久久蜜臀 | 亚洲日产韩国一二三四区| 你懂得的在线观看免费视频| 亚洲色婷婷一区二区三区| 国产午夜无码精品免费看| 国产真实伦在线视频免费观看| 国产亚洲精品仙踪林在线播放| 亚洲中文无韩国r级电影| av永久免费网站在线观看| 日韩精品亚洲人成在线观看 | 国产免费观看a大片的网站| 美女被免费网站视频在线| 亚洲精品国产电影| 永久免费AV无码网站国产| 久久综合亚洲色一区二区三区| 免费可以在线看A∨网站| 国产大陆亚洲精品国产| 国产亚洲A∨片在线观看| 5g影院5g天天爽永久免费影院 | 亚洲AV无码不卡无码| 无码少妇一区二区浪潮免费| 国产精品久久亚洲一区二区| 亚洲精品乱码久久久久久蜜桃不卡| 91人人区免费区人人| 国产亚洲精品2021自在线| 亚洲福利视频导航| 日本一区免费电影| 日本卡1卡2卡三卡免费| 伊人久久亚洲综合影院首页|