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>
          ------------------------------------------------------------------------------

          來(lái),我們將它支解掉。:)  好象沒(méi)有什么好說(shuō)的。很簡(jiǎn)單。這是某個(gè)form下的一個(gè)properties的標(biāo)準(zhǔn)寫法。其中我們要重視一下這句話: <arg0 name="maxlength" key="${var:maxlength}" resource="false" /> , resource屬性指的是:是從資源文件里面讀key的值嗎? 
                                            if (resource == "false") {
                                                  請(qǐng)取當(dāng)前定義的變量的值。[因?yàn)闉閒alse的時(shí)候,因?yàn)榈帽仨毜媒o個(gè)值來(lái)組裝錯(cuò)誤信息,因?yàn)榇藭r(shí)我們不會(huì)到消息資源文件里提取值]
                                            } else if (resource == "true) {
                                                 請(qǐng)到資源文件里提取用來(lái)組裝錯(cuò)誤消息的值.
                                           }
          你會(huì)問(wèn):如果我不指定resourse的值怎么樣?默認(rèn)是true,即:默認(rèn)下它會(huì)去讀properties文件里面的值。 (這似乎與java的boolean的默認(rèn)是false有點(diǎn)違背),如果我沒(méi)有配呢?那么是null.

          當(dāng)然我也做了一個(gè)實(shí)驗(yàn)證明了這點(diǎn):

          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的長(zhǎng)度超過(guò)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>
          ------------------------------------------------------------------------------
          這樣我們也能達(dá)到同樣的效果。Right? 但是誰(shuí)愿意呢? 只是我這樣寫似乎更加容易理解吧.并且這樣做就失去了validation的某些特別的功效,你得為每個(gè)重新在資源文件里寫一條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.]后面的例子我也就沒(méi)有給出來(lái),那么這句話到底在肌理哇啦個(gè)什么呢? 先看一小段代碼:
          ------------------------------------------------------------------------------------------------
          <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>
          ------------------------------------------------------------------------------------------------
          再?gòu)?qiáng)調(diào)一遍:validation的錯(cuò)誤信息是這樣組裝的:通過(guò)arg0 - arg3等來(lái)和資源文件里面的并且消息名字在validator-rule.xml定義好的規(guī)則所對(duì)應(yīng)的消息來(lái)合成的。validator-rule.xml所定義的msg是面向所有的該規(guī)則的錯(cuò)誤消息,每個(gè)form field可以通過(guò)arg0-arg3來(lái)定制自己的消息(這個(gè)我提到過(guò))

          如果我們加入msg消息到filed標(biāo)簽下面:

          ------------------------------------------------------------------------------------------------
          <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>
          ------------------------------------------------------------------------------------------------
          那么此時(shí)的maxlength在規(guī)則里面的msg將會(huì)被<field>里面的msg覆蓋,也就是說(shuō)<arg0>的定義形同虛設(shè),更會(huì)無(wú)視r(shí)esourse屬性的false or true;

          3.幾個(gè)規(guī)則(rules)作用于同一個(gè)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>
          ------------------------------------------------------------------------------------------------
          如果很多約束針對(duì)某一個(gè)form的屬性,我們可以這樣寫,當(dāng)然如果你非要分開(kāi)寫也可以。那么在xml文件中一個(gè)form的field就有多條記錄.
          這里有一點(diǎn)需要注意一下:<arg0><arg1><arg2>在這里定義了以后,別的form的屬性也要按照這種順序來(lái),也就是:<arg0>對(duì)應(yīng)的是 maxlength. <arg1>對(duì)應(yīng)的是minlength.<arg2>對(duì)應(yīng)的是 requried.為什么這樣做?
          因?yàn)樵谖覀兊膒roperties文件中是寫死的。如果不這樣做,那么就會(huì)出現(xiàn)得到null值的錯(cuò)誤啦.
          ------------------------------------------------------------------------------------------------
          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}
          ------------------------------------------------------------------------------------------------


          補(bǔ)充一下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>

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

          posted on 2006-09-23 16:44 lzj520 閱讀(361) 評(píng)論(0)  編輯  收藏 所屬分類: Struts1
          主站蜘蛛池模板: 鸡泽县| 朝阳县| 盐边县| 麦盖提县| 庆城县| 前郭尔| 方城县| 成都市| 平定县| 柳州市| 彭阳县| 临泽县| 普定县| 茌平县| 如皋市| 谢通门县| 托克逊县| 尖扎县| 崇阳县| 靖安县| 呼伦贝尔市| 鞍山市| 葵青区| 望谟县| 乐至县| 西丰县| 四会市| 沧州市| 南丰县| 当雄县| 丰原市| 福鼎市| 广东省| 贵德县| 共和县| 黔南| 靖远县| 北川| 双柏县| 肇庆市| 张家港市|