隨筆-34  評論-1965  文章-0  trackbacks-0
          All Input Is Evil!
          -Writing secure code

          在寫前幾篇文章的時候,有些朋友建議我的寫一篇關于表單數據校驗的文章。 正如文章的開頭所引用的《Writing Secure Code》的名言:“所有的輸入都是罪惡的”,所以我們應該對所有的外部輸入進行校驗。而表單是應用程序最簡單的入口,對其傳進來的數據,我們必須進行校驗。

          轉換與校驗(Conversion & Validation)

          其實上篇文章,我本來是打算寫表單數據校驗的內容,但是經過再三思考后,還是決定先寫Struts 2.0轉換器的內容。原因是我認為轉換是校驗的基礎,只有在數據被正確地轉換成其對應的類型后,我們才可以對其取值范圍進行校驗??磦€例子相信大家可以更清楚。現在我們就來改造一下《轉換器(Converter)——Struts 2.0中的魔術師》的第一個例子。

          首先,從Action開始,修改后的代碼如下:

          package tutorial;

          import java.util.Locale;

          import com.opensymphony.xwork2.ActionSupport;
          import com.opensymphony.xwork2.util.LocalizedTextUtil;

          public class HelloWorld extends ActionSupport {
          ? ?
          private String msg;
          ? ?
          private Locale loc = Locale.US;
          ? ?
          ? ?
          public String getMsg() {
          ? ? ? ?
          return msg; ? ? ? ?
          ? ?}

          ? ?
          ? ?
          public Locale getLoc() {
          ? ? ? ?
          return loc;
          ? ?}

          ? ?
          ? ?
          public void setLoc(Locale loc) {
          ? ? ? ?
          this .loc = loc;
          ? ?}

          ? ?
          ? ?@Override
          ? ?
          public void validate() {
          ? ? ? ?System.out.println(
          " Calling validate() " );
          ? ? ? ?
          if ( ! (loc.equals(Locale.US) || loc.equals(Locale.CHINA))) {
          ? ? ? ? ? ? ? ? ? ?addFieldError(
          " loc " , getText( " validation.loc " ));
          ? ? ? ?}

          ? ?}

          ? ? ? ?
          ? ?
          public void validateExecute() {
          ? ? ? ?System.out.println(
          " Calling validateExecute() by reflection " );
          ? ?}

          ? ?
          ? ?@Override
          ? ?
          public String execute() {
          ? ? ? ?System.out.println(
          " Calling execute() " );
          ? ? ? ?
          // LocalizedTextUtil是Struts 2.0中國際化的工具類,<s:text>標志就是通過調用它實現國際化的
          ?? ?? ? ? ?msg = LocalizedTextUtil.findDefaultText( " HelloWorld " , loc);
          ? ? ? ?
          return SUCCESS;
          ? ?}

          }

          然后,修改Struts.xml中Action的定義指明輸入地址:

          < action name ="HelloWorld" class ="tutorial.HelloWorld" >
          ? ?
          < result > /HelloWorld.jsp </ result >
          ? ?
          < result name ="input" > /HelloWorld.jsp </ result >
          </ action >

          接著,在HelloWorld.jsp中加入錯誤提示:

          <% @ page ?contentType = " text/html; charset=UTF-8 " %>
          <% @taglib prefix = " s " uri = " /struts-tags " %>
          < html >
          < head >
          ? ?
          < title > Hello World </ title >
          </ head >
          < body >
          ? ?
          < div style ="color:red;" >
          ? ? ? ?
          < s:fielderror />
          ? ?
          </ div >
          ? ?
          < s:form action ="HelloWorld" theme ="simple" > ? ? ? ? ? ?
          ? ? ? ? Locale:
          < s:textfield name ="loc" /> &nbsp; < s:submit />
          ? ?
          </ s:form > ? ?
          ? ?
          < h2 >< s:property value ="msg" /></ h2 >
          </ body >
          </ html >

          再修改LocaleConverter.java文件,將內容改為:

          package tutorial;

          import java.util.Locale;
          import java.util.Map;
          import java.util.regex.Pattern;

          public class LocaleConverter extends ognl.DefaultTypeConverter {
          ? ?@Override
          ? ?
          public Object convertValue(Map context, Object value, Class toType) {
          ? ? ? ?
          if (toType == Locale. class ) { ? ? ? ? ? ?
          ? ? ? ? ? ?System.out.println(
          " Converting String to Locale " );
          ? ? ? ? ? ?String locale
          = ((String[]) value)[ 0 ];
          ? ? ? ? ? ?
          return new Locale(locale.substring( 0 , 2 ), locale.substring( 3 ));
          ? ? ? ?}
          else if (toType == String. class ) {
          ? ? ? ? ? ?System.out.println(
          " Converting Locale to String " );
          ? ? ? ? ? ?Locale locale
          = (Locale) value;
          ? ? ? ? ? ?
          return locale.toString();
          ? ? ? ?}

          ? ? ? ?
          return null ;
          ? ?}

          }

          之后,修改國際化資源文件,內容為:

          HelloWorld = 你好,世界!
          invalid.fieldvalue.loc
          = Locale必須為\ " xx_XX\ " 的格式
          validation.loc
          = 區域必須為中國或美國
          globalMessages_zh_CN.properties

          HelloWorld = Hello World!
          invalid.fieldvalue.loc
          = Locale must like \ " xx_XX\ "
          validation.loc
          = Locale must be China or USA
          globalMessages_en_US.properties

          發布運行應用程序,在瀏覽器中鍵入http://localhost:8080/Struts2_Validation/HelloWorld.action,在Locale中輸入zh_CN,按“Submit”提交,效果如上篇文章所示。而在服務器控制臺有如下輸出:

          Converting String to Locale...
          Calling validateExecute() by reflection...
          Calling validate()...
          Calling execute()...
          Converting Locale to String...

          上述的輸出說明了Struts 2.0的數據校驗工作方式,它需要經過下面幾個步驟:

          1. 通過轉換器將請求參數轉換成相應的Bean屬性;
          2. 判斷轉換過程是否出現異常。如果有,則將其保存到ActionContext中,conversionError攔截器再封裝為fieldError;如果沒有,進行下一步;
          3. 通過反射(Reflection)來調用validateXxx()方法(其中,Xxx表示Action的方法名);
          4. 調用validate()方法;
          5. 如果經過上述步驟沒有出現fieldError,則調用Action方法;如果有,則會跳過Action方法,通過國際化將fieldError輸出到頁面。

          不喜歡看文字的朋友,可以參考下面的圖1。

          圖1 校驗順序圖
          圖1 校驗順序圖

          看到這里可能大家會疑問:“這么多地方可以校驗表單數據,到底我應該在那里做呢?”有選擇是好事,但抉擇的過程往往是痛苦的,往往讓人不知所措。如果大家參照以下幾點建議,相信會比較容易地做出正確的抉擇。

          1. 如果需要轉換的數據,通常做法在轉換的時候做格式的校驗,在Action中的校驗方法中校驗取值。假如用戶填錯了格式,我們可以通過在資源文件配置invalid.fieldvalue.xxx(xxx為屬性名)來提示用戶正確的格式,不同的階段出錯顯示不同的信息。具體做法請參考上面的例子;
          2. 至于用validate()還是validateXxx(),我推薦使用validate()。原因是validateXxx()使用了反射,相對來說性能稍差,而validate()則是通過接口com.opensymphony.xwork2.Validateable調用。當然如果你的表單數據取值是取決于特定Action方法,則應該使用validateXxx()。

          在運行上面的例子時,在Locale中輸入zh并提交時出現圖2所示頁面。

          圖2 錯誤格式
          圖2 錯誤格式

          在Locale中輸入de_DE時,出現如圖3所示頁面。

          圖3 取值錯誤
          圖3 取值錯誤

          使用Struts 2.0的校驗框架

          上一節的內容都是關于如何編程實現校驗,這部分工作大都是單調的重復。更多情況下,我們使用Struts 2.0的校驗框架,通過配置實現一些常見的校驗。

          我學習編程有個習慣——喜歡先看輸出結果,再看代碼實現。這樣學的好處是先看結果可以刺激學習的激情,也可以在看代碼前自已思考一下如何實現,然后帶著問題去看代碼,那就清晰多了。因此下面我們先來做演示。

          首先,在tutorial包下新建ValidationAction.java,代碼如下:

          package tutorial;

          import com.opensymphony.xwork2.ActionSupport;

          public class ValidationAction extends ActionSupport {
          ? ?
          private String reqiuredString;

          ? ?
          public String getReqiuredString() {
          ? ? ? ?
          return reqiuredString;
          ? ?}


          ? ?
          public void setReqiuredString(String reqiuredString) {
          ? ? ? ?
          this .reqiuredString = reqiuredString;
          ? ?}

          ? ?
          ? ?@Override
          ? ?
          public String execute() {
          ? ? ? ?
          return SUCCESS;
          ? ?}
          ? ?
          }

          然后,配置上述所建的Ation,代碼片段如下:

          < action name ="ValidationAction" class ="tutorial.ValidationAction" >
          ? ?
          < result > /Output.jsp </ result >
          ? ?
          < result name ="input" > /Input.jsp </ result >
          </ action >

          接著,創建Input.jsp和Output.jsp,內容分別如下:

          <% @ page ?contentType = " text/html; charset=UTF-8 " %>
          <% @taglib prefix = " s " uri = " /struts-tags " %>
          < html >
          < head >
          ? ?
          < title > Hello World </ title >
          ? ?
          <!-- 此標志的作用是引入Struts 2.0的常用的Javascript和CSS -->
          ? ?
          < s:head />
          </ head >
          < body >
          ? ?
          < s:form action ="ValidationAction" > ? ? ? ? ? ?
          ? ? ? ?
          < s:textfield name ="reqiuredString" label ="Required String" />
          ? ? ? ?
          < s:submit />
          ? ?
          </ s:form > ? ?
          </ body >
          </ html >
          Input.jsp

          <% @ page ?contentType = " text/html; charset=UTF-8 " %>
          <% @taglib prefix = " s " uri = " /struts-tags " %>
          < html >
          < head >
          ? ?
          < title > Hello World </ title >
          </ head >
          < body >
          ? ? Required String:
          < s:property value ="reqiuredString" /> ? ?
          </ body >
          </ html >
          Output.jsp

          再接下來,在tutorial包下創建ValidationAction的校驗配置文件Xxx-validation.xml(Xxx為Action的類名),在本例中該文件名ValidationAction-validation.xml,內容如下:

          <? xml version="1.0" encoding="UTF-8" ?>
          <! DOCTYPE validators PUBLIC?
          ? ? ? ? ? "-//OpenSymphony Group//XWork Validator 1.0//EN"?
          ? ? ? ? ? "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"
          > ? ? ? ? ?
          < validators >
          ? ?
          < field name ="reqiuredString" >
          ? ? ? ?
          < field-validator type ="requiredstring" >
          ? ? ? ? ? ?
          < message > This string is required </ message >
          ? ? ? ?
          </ field-validator >
          ? ?
          </ field >
          </ validators >

          發布運行應用程序,在地址欄中鍵入http://localhost:8080/Struts2_Validation/Input.jsp,出現如圖4所示頁面。

          圖4 Input.jsp
          圖4 Input.jsp

          直接點擊“Submit”提交表單,出現圖5所示的頁面。

          圖5 錯誤提示
          圖5 錯誤提示

          在Required String中隨便填點東西,轉到Output.jsp頁面,如圖6所示。

          圖6 Output.jsp
          圖6 Output.jsp

          通過上面的例子,大家可以看到使用該校驗框架十分簡單方便。不過,上例還有兩點不足:

          1. 還沒有國際化錯誤消息;
          2. 沒有實現客戶端的校驗。

          當然,要完善以上不足,對于Struts 2.0來說,只是小菜一碟。

          1. 在Xxx-validation.xml文件中的<message>元素中加入key屬性;
          2. 在Input.jsp中的<s:form>標志中加入validate="true"屬性,就可以在用Javascript在客戶端校驗數據。

          下面是具體的實現,首先在國際化資源文件中加入錯誤消息,然后按照上面說明實現。因為要使用Javascript在客戶端顯示出錯信息,所以在加載Input.jsp頁面時,Struts 2.0需要獲得國際化的字符串,故我們需要使用Action來訪問Input.jsp頁面,具體實現請參考《在Struts 2.0中國際化(i18n)您的應用程序》的最后部分。最后發布運行應用程序,直接在頁面中點擊“Submit”,表單沒有被提交并出現錯誤提示,如圖7所示:

          圖7 客戶端校驗
          圖7 客戶端校驗

          校驗框架是通過validation攔截器實現,該攔載被注冊到默認的攔截器鏈中。它在conversionError攔截器之后,在validateXxx()之前被調用。這里又出現了一個選擇的問題:到底是應該在action中通過validateXxx()或validate()實現校驗,還是使用validation攔截器?絕大多數情況,我建議大家使用校驗框架,只有當框架滿足不了您的要求才自已編寫代碼實現。

          配置文件查找順序

          在上面的例子中,我們通過創建ValidationAction-validation.xml來配置表單校驗。Struts 2.0的校驗框架自動會讀取該文件,但這樣就會引出一個問題——如果我的Action繼承其它的Action類,而這兩個Action類都需要對表單數據進行校驗,那我是否會在子類的配置文件(Xxx-validation.xml)中復制父類的配置嗎?

          答案是不,因為Struts 2.0的校驗框架跟《在Struts 2.0中國際化(i18n)您的應用程序》提到的“資源文件查找順序”相似,有特定的配置文件查找順序。不同的是校驗框架按照自上而下的順序在類層次查找配置文件。假設以下條件成立:

          1. 接口 Animal;
          2. 接口 Quadraped 擴展了 Animal;
          3. 類 AnimalImpl 實現了 Animal;
          4. 類 QuadrapedImpl 擴展了 AnimalImpl 實現了 Quadraped;
          5. 類 Dog 擴展了 QuadrapedImpl;

          如果Dog要被校驗,框架方法會查找下面的配置文件(其中別名是Action在struts.xml中定義的別名):

          1. Animal-validation.xml
          2. Animal-別名-validation.xml
          3. AnimalImpl-validation.xml
          4. AnimalImpl-別名-validation.xml
          5. Quadraped-validation.xml
          6. Quadraped-別名-validation.xml
          7. QuadrapedImpl-validation.xml
          8. QuadrapedImpl-別名-validation.xml
          9. Dog-validation.xml
          10. Dog-別名-validation.xml

          已有的校驗器

          Struts 2.0已經為您實現很多常用的校驗了,以下在jar的default.xml中的注冊的校驗器。

          < validators >
          ? ?
          < validator name ="required" class ="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator" />
          ? ?
          < validator name ="requiredstring" class ="com.opensymphony.xwork2.validator.validators.RequiredStringValidator" />
          ? ?
          < validator name ="int" class ="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator" />
          ? ?
          < validator name ="double" class ="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator" />
          ? ?
          < validator name ="date" class ="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator" />
          ? ?
          < validator name ="expression" class ="com.opensymphony.xwork2.validator.validators.ExpressionValidator" />
          ? ?
          < validator name ="fieldexpression" class ="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator" />
          ? ?
          < validator name ="email" class ="com.opensymphony.xwork2.validator.validators.EmailValidator" />
          ? ?
          < validator name ="url" class ="com.opensymphony.xwork2.validator.validators.URLValidator" />
          ? ?
          < validator name ="visitor" class ="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator" />
          ? ?
          < validator name ="conversion" class ="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator" />
          ? ?
          < validator name ="stringlength" class ="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator" />
          ? ?
          < validator name ="regex" class ="com.opensymphony.xwork2.validator.validators.RegexFieldValidator" />
          </ validators >
          關于每個校驗器的具體用法,請參考以下鏈接:
          http://wiki.javascud.org/display/ww2cndoc/Validation
          該鏈接中還有一些很有的信息,請大家仔細閱讀。

          總結

          使用校驗框架既可以方便地實現表單數據校驗,又能夠將校驗與Action分離,故我們應該盡可能使用校驗框架。在使用校驗框架時,請不要忘記通過在資源文件加入invalid.fieldvalue.xxx字符串,顯示適合的類型轉換出錯信息;或者使用conversion校驗器。

          posted on 2006-11-14 13:38 Max 閱讀(51496) 評論(118)  編輯  收藏 所屬分類: Struts 2.0系列
          評論共2頁: 1 2 下一頁 

          評論:
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2007-04-19 17:42 | test
          請問這個是什么問題?  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-04-19 23:12 | Max
          @huhuyeah
          你是不是設了<s:form />標志的theme屬性?
          正常情況下,生成的Javascript代碼應該在</form>之后,如:
          <script type="text/javascript">
          function validateForm_Xxx() {
          ...
          }
          </script>  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-04-20 09:41 | huhuyeah
          @Max
          是的,我把struts.ui.theme設置成simple了
          這樣校驗就不起作用了。把simple去掉就起作用了
          但是這樣的話會自動生產一些表格。
          能不能表格由我自己定制,而校驗依然能使用的方法?
          另外自動生產的JS也不是很好,總是提示objectError,然后顯示錯誤標簽
          我是希望提示的時候就把錯誤的信息直接alert出來
          這種能不能通過設置解決,謝謝  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-04-20 12:02 | mm
          這里的文章很好耶!  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2007-04-20 15:11 | Leo
          你好,有個問題請教一下,已經發到你的郵箱里了,有時間時請幫忙解答一下,謝謝!  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-04-23 15:46 | mm
          如何進行客戶端校驗?是自己寫javascript代碼,還是配置Xxx-Validation.xml文件來實現?我想用我自己的javascript代碼,怎么用呢?  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-04-24 13:53 | jiajia
          我的LoginAction里面有兩個方法:init,login。如果我要讓init方法執行時不驗證,logic方法執行時做驗證,該怎么配置,
          我的LoginAction-validation.xml的內容是:
          <validators>
          <field name="userId">
          <field-validator type="requiredstring">
          <message key="required"/>
          </field-validator>
          </field>
          </validators>
          struts.xml的內容是:
          <package name="loginAction" extends="struts-default">
          <action name="login" class="login.LoginAction">
          <result name="sussessInit">/WEB-INF/jsp/login.jsp</result>
          <result name="sussessLogin">/WEB-INF/jsp/main.jsp</result>
          <result name="input">/WEB-INF/jsp/login.jsp</result>
          </action>
          </package>
          請賜教  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-04-25 09:40 | huhuyeah
          @mm
          兩種都可以。
          如果用自己的js,在form的onsumbit時候里面調用自己的js就可以了
          也可以在提交按鈕里面onclick調用自己的校驗js再forms[0].submit()來提交表單  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-04-25 09:47 | Max
          @mm
          建議使用Struts 2的validation框架。  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-04-25 09:49 | Max
          最簡單的方法就是將你的LoginAction-validation.xml文件改名為“LoginAction-login-validation.xml”。這樣validation的配置只對login起作用。  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-04-25 13:42 | ddd
          使用JS的話, 也有他的好處, 減少和Server間的通信,

          Server端校驗的話, 用Struts準備的也可以。。

          不過,偶以前做的項目,都是自己寫校驗的類。。。

          幾乎沒用過validation  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-04-26 14:42 | jiajia
          文章中的驗證是用xwork提供的方法,action方法要繼承ActionSupport,如果不用xwork提供的驗證,使用Struts 2的validation框架驗證,驗證走DWRValidator類提供的方法,應該怎么辦?  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-04-26 15:01 | ddd
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-06-03 22:45 | jezz
          在第一個例子有點小問題
          validation.loc = 區域必須為中國或美國
          這個我顯示出錯,沒有顯示出錯信息,直接把validate.loc顯示出來了!
          后來我把
          validate.loc = 區域必須為中國或美國
          就可以顯示了!

          我直接在關注你的文章!
          已經加了你的gtalk很少看到你!  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-06-04 23:26 | Max
          @jezz
          對不起,最近比較忙一點。  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2007-06-07 20:42 | Oliver
          huhuyeah,你那個關于theme的驗證問題解決了嗎?我和你碰到了一樣的煩惱,郁悶啊,不知該怎么辦?。。?!  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2007-06-07 22:19 | Oliver
          我的action配置為
          <action name="類名" class="...">
          <interceptor-ref name="validationWorkflowStack"/>
          <result>list.jsp</result>
          <result name="list" type="redirect-action">類名!list</result>
          <result name="input">edit.jsp</result>
          </action>
          在edit.jsp頁面中,通過"類名!save.action"來進行保存,另外配置了"類名-save-validation.xml"文件。
          我的問題的,當把驗證配置文件改名為"類名-validation.xml"時,會對用"類名"加"!"方式訪問的所有方法進行驗證,可以只想對save方法進行驗證,但將配置文件更名為"類名-save-validation.xml"后,驗證就不起作用了.............  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2007-06-07 22:20 | Oliver
          @Oliver
          可“是”只想對save方法進行驗證,打錯一個字:(  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-06-11 14:23 | Mosquito
          為什么我一進頁面錯誤提示就出現呢??
          沒提交之前就出現。。。。
          為什么,幫忙分析一下原因唄??!  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-06-12 11:25 | wldandan
          樓主,我的Action 定義如下
          <action name="save" class="ManagerConfigAction"
          method="save">
          <result name="input" type="dispatcher">/Conf/mozartConf.jsp</result>
          <result type="redirect">/mozartConf/show.action</result>
          </action>

          然后定義了validator配置文件
          運行后,當在input框輸入錯誤值時,錯誤提示信息可以顯示出來,但服務器端還是對數據進行了保存啊!!  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-06-19 17:40 | jpma
          請問:"在Xxx-validation.xml文件中的<message>元素中加入key屬性; "
          這個怎么操作啊?
          謝謝了!  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-06-21 17:01 | jpma
          @jpma
          自己找到答案了,我是這樣寫的,功能實現了,不知有沒有其它的方式。
          修改Xxx-validation.xml文件中的<validators>部分
          <validators>
          <field name="reqiuredString">
          <field-validator type="requiredstring">
          <message key="validation.req" />
          </field-validator>
          </field>
          </validators>

          其中key的值對應globalMessages_en_US.properties與globalMessages_zh_CN.properties中“validation.req”
          -------------------------------------------------
          HelloWorld=HelloWorld!
          invalid.fieldvalue.loc = Locale must like \ " xx_XX\ "
          validation.loc = Locale must be China or USA
          validation.require=${getText(fileName)} is required
          validation.rqu=This string is required
          -------------------------------------------------  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-06-21 17:05 | jpma
          最后一行寫錯了,是
          validation.req=This string is required

          globalMessages_zh_CN.properties內容
          -------------------------------------------------
          HelloWorld=你好,世界!哈哈
          invalid.fieldvalue.loc = Locale必須為\ " xx_XX\ " 的格式
          validation.loc = 區域必須為中國或美國
          validation.require=${getText(fileName)} is required
          validation.req=字符串不可為空
          -------------------------------------------------  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-06-26 00:00 | jezz
          那不用寫javascript驗證???  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-07-04 17:39 | 任遨游
          在</form>這后已產生了js,為什么驗證不起作用呢,并沒有提示信息
          <script type="text/javascript">
          function validateForm_ValidationAction() {
          form = document.getElementById("ValidationAction");
          clearErrorMessages(form);
          clearErrorLabels(form);

          var errors = false;

          return !errors;
          }
          </script>  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-07-04 23:30 | Max
          @任遨游
          --------------------------------------------
          在Input.jsp中的<s:form>標志中加入validate="true"屬性,就可以在用Javascript在客戶端校驗數據。  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-07-05 11:59 | 任遨游
          @Max

          以下是我input.jsp代碼,可是還是不起作用
          <%@ page contentType="text/html;charset=UTF-8" %>
          <%@ taglib prefix="s" uri="/struts-tags" %>
          <html>
          <head>
          <title> Hello World </title>
          <!-- 姝ゆ爣蹇楃殑浣滅敤鏄紩鍏truts 2.0鐨勫父鐢ㄧ殑Javascript鍜孋SS -->
          <s:head/>
          </head>
          <body>
          <s:form action="ValidationAction" validate="true">
          <s:textfield name="reqiuredString" label="Required String" />
          <s:submit/>
          </s:form>
          </body>
          </html>   回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-07-05 15:16 | 妖狐
          Struts2.x是否可以像Struts1.x那樣使用統一的表單校驗文件validation.xml  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-07-05 22:40 | Max
          @妖狐
          我認為不可以。  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-07-06 11:28 | 任遨游
          表單校驗很重要,max的所有例子我都運行了下,只有這個校驗,還有那個showproduct.jsp這兩個例子
          怎么也調不過去了。郁悶ing  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-07-11 15:21 | 任遨游
          沒有回復了?我用的struts2.0.8,怎么校驗不起作用呢  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-07-11 22:37 | Max
          @任遨游
          三言兩語,我也幫不了你。
          不如你留下Email,我有空的時候可以將例子的源碼發你。  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-07-12 09:35 | 任遨游
          @Max
          supershan@163.com,非常感謝  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-07-19 19:38 | 游客
          今天用一下validator框架,也遇到了這個問題真是郁悶極了.
          哪位知道解決辦法啊?  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-07-21 12:01 | tans
          我的驗證都通過了,但是驗證錯誤信息提示老顯示在上方,有沒有什么辦法可以讓它顯示在驗證行之后呢?還有有哪位老大把他那官方Using FieldValidators示例調式通過了的啊,為什么我老提示No result defined for action  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-07-24 17:10 | 任遨游
          這個例子通過了,其實max的例子都是可以的,有時運行不通過,很有可能是配置時,只差了一點點。  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-13 16:46 | tans
          能不能修改錯誤信息顯示的位置???顯示在上方不太好看?  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-14 13:55 | 陳利
          如果在表單中填入數字,而且是必填的,如何寫配置文件?。?nbsp; 回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-16 11:14 | darvsum
          講解得相當透徹。謝謝  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-20 17:25 | 甲生
          如果使用框架驗證,每一個action需要一個相應的配置文件,那豈不是增加了工作量?  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-20 17:33 | 甲生
          文章寫到后面,怎么草草收兵了,頗有不解之處  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-20 23:53 | Max
          @甲生
          1、“增加了工作量”這個問題可以說是見仁見智;
          2、有些東西是“師傅領入門,修行靠自己”;我本人能力和時間有限,所以不可以面面俱到。  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-21 08:27 | 甲生
          是的,雖然有些不懂,但也學了不少,非常感謝!  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-22 11:03 | romatory
          為什么使用自定義校驗器不行,
          嚴重: Servlet.service() for servlet default threw exception
          java.lang.ExceptionInInitializerError
          at com.opensymphony.xwork2.validator.ValidatorFileParser.
          addValidatorConfigs(ValidatorFileParser.java:192)  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-22 16:51 | zouzhihua
          把validate="true"這個加上之后會出現
          FreeMarker template error!

          Method public java.lang.String com.opensymphony.xwork2.validator.validators.ValidatorSupport.getMessage(java.lang.Object) threw an exception when invoked on com.opensymphony.xwork2.validator.validators.RequiredStringValidator@10699ea
          The problematic instruction:
          ----------
          ==> ${validator.getMessage(action)?js_string} [on line 28, column 26 in template/xhtml/form-close-validate.ftl]
          in include "/${parameters.templateDir}/xhtml/form-close-validate.ftl" [on line 3, column 1 in template/xhtml/form-close.ftl]
          ----------

          Java backtrace for programmers:
          ----------
          freemarker.template.TemplateModelException: Method public java.lang.String com.opensymphony.xwork2.validator.validators.ValidatorSupport.getMessage(java.lang.Object) threw an exception when invoked on com.opensymphony.xwork2.validator.validators.RequiredStringValidator@10699ea  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-22 16:52 | zouzhihua
          在線等待解決  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-23 15:56 | pxcong
          @Max
          你寫的文章太好啦,講解的也很仔細,可以出書了,呵呵~:)
          能幫我解決下 提交前就進行驗證的問題,(我不想在未提交前就輸出警告信息,如:字符不為空。)
          如果好的例子的話可以發給我嗎?
          郵箱:pxcong007@126.com
            回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-28 12:06 | louleigh
          max哥..小弟又來拜讀你的大作啦..
          請問一下。
          在alidation框架下面。
          如果想用紅色顯示該怎么做啊。.
            回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-28 12:11 | louleigh
          如果按照你的第一種方法來弄。.則會顯示兩個.
          一個是紅色的.一個是黑色的。請問應該怎么解決也  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-28 23:09 | Max
          @louleigh
          不是很明白你的問題,能否詳細一點  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-08-30 08:44 | louleigh
          我的問題就是你驗證后要提示錯誤信息嘛。

          怎么把那個錯誤信息變成紅色的。。

          我看了一下我的表達好象是有點問題。。

          我現在的問題是他要提示錯誤。

          但是錯誤顯示是黑色的。。

          我可以在他前面加上

          <div style="color:red"><s:fielderror></div>

          但是這樣的話。他就會顯示兩次錯誤信息。

          我想顯示一次。并且讓他成為紅色。

          請問該怎么做。

          麻煩你啦。。max哥  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-09-01 15:59 | louleigh
          我配置出來的后。。
          validation他顯示的顏色是黑色。。。
          我的意思大概就是這個  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-09-01 16:29 | gdm
          我的程序怎么出不來呢?加上驗證的就過不去。請教高手除了寫actionname-validation.xml 以外還需要配置別的地方嗎?謝謝
            回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-09-01 16:33 | ts
          按照上面的配置之后,運行出以下的錯誤
          Document is invalid: no grammar found
          請問該如何解決  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-09-01 16:41 | louleigh
          @gdm
          actionname-validation.xml除了這個玩意兒沒有地方需要寫了
          請你把max的例子。。仔細看下哪里整錯了沒有。
          max的例子是絕對正確的

          仔細檢查  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-09-01 16:42 | louleigh
          max我知道問題出在哪里了
          問題出在
          我以前沒有寫<s:head/>
          這個東西。。
          現在用了這個就可以變色了

          請問s:head是實現的什么東西啊

          我可以重寫他的內容嗎。

          他改變了我頁面的其他顯示啊。。

          我不想用他的字體。。如果知道請回答  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-09-01 16:47 | gdm
          首先感謝louleigh的回復,我閱讀好幾遍了
          以下是我的RegisterAction-validation.xml中寫到的
          <?xml version="1.0" encoding="UTF-8"?>
          <validators>
          <field name ="user.username">
          <field-validator type ="requiredstring">
          <message> This string is required </message>
          </field-validator>
          </field>
          <field name="user.password">
          <field-validator type="requiredstring">
          <message>You must enter a value for password.</message>
          </field-validator>
          <field-validator type="fieldexpression">
          <param name="expression">
          user.password == user.verifyPassword
          </param>
          <message>Passwords don't match.</message>
          </field-validator>
          </field>
          <field name="user.birthday">
          <field-validator type="date">
          <param name="min">12/22/1980</param>
          <param name="max">9/1/2007</param>
          <message>The date must be between 12-22-2002 and 12-25-2002.</message>
          </field-validator>
          </field>

          <field name="user.email">
          <field-validator type="email">
          <message>You must enter a valid email.</message>
          </field-validator>
          </field>
          <field name="user.age">
          <field-validator type="int">
          <param name="min">6</param>
          <param name="max">100</param>
          <message>
          Age must be between ${min} and ${max}, current value is
          ${user.age}.
          </message>
          </field-validator>
          </field>
          </validators>
          下面是struts.xml
          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
          "http://struts.apache.org/dtds/struts-2.0.dtd">
          <struts>
          <package name="default" extends="struts-default">
          <action name="reg"
          class="com.gdm.actions.RegisterAction.RegisterAction">
          <result name="success" type="dispatcher">
          <param name="location">/result.jsp</param>
          </result>

          <result name="input" type="dispatcher">
          <param name="location">/register.jsp</param>
          </result>

          <interceptor-ref name="validationWorkflowStack"/>
          </action>
          </package>

          </struts>
          請教高手幫忙分析一下!在線等  回復  更多評論
            
          # validate失敗以后,畫面中的list重新復值得問題 2007-09-05 18:19 | elegant
          我用validate-別名-validate.xml方式驗證畫面的數據項目,如果失敗的情況下,直接返回到提交畫面,但是這個畫面的list項目還沒有設定(因為沒有進入action)我怎么做才能重新這個list得值呢  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-09-07 17:04 | 大米
          @zouzhihua
          跟你的問題一模一樣。沒人解答 算了...等我解決告訴你  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-09-11 11:32 | bqshi
          @大米

          這個問題的直接原因是validationsupport.getMessage的時候需要根據你傳進來的action對象o,得到o.class的log,產生了nullpoiter exception,根本原因是沒有通過action訪問jsp文件,所以傳進來的action是null。
          我的mail:shiboqing@gmail.com  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-10-09 14:59 | yangdamao
          @Max
          請問:"1.在Xxx-validation.xml文件中的<message>元素中加入key屬性;
          2.在Input.jsp中的<s:form>標志中加入validate="true"屬性,就可以在用Javascript在客戶端校驗數據。 "這兩條是不是不能同時實現啊?
          我試驗了一下,如果滿足了第一條的情況下,再加上validate="true",就會出現
          和zouzhihua & 大米 一樣的錯誤提示.但是只滿足第貳條時,就可以在客戶端進行驗證.還請Max先生解釋一下!Tks!  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-11-09 16:16 | jiang
          我在做驗證的一個例子:
          在注冊時,通常要輸入密碼和驗證密碼兩項內容,請問如何才能用validation.xml來進行驗證.
          我看了幾個例子,但是它們的輸入數據都是只能一個,如何往validation.xml中傳入兩個數據呢?
          請你幫我解決一下,謝謝了!
            回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-11-17 15:48 | sophia
          頁面第一次顯示的時候,不想引發驗證。該怎么設置呢?  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2007-11-29 09:36 | Elven
          Struts2,好東西!  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-11-29 17:01 | Elven
          各位,為什么我的校驗框架,無論是在輸入出錯或者沒有出錯的時候都會拋出錯誤呢?
          補充:我是按照max的流程來做的。  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2007-12-16 16:49 | way
          為什么我完全按照例子來的 可是不輸入任何內容的時候也會正常顯示 只是為空罷了 大家認為錯誤最可能出在哪了 ?  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-01-02 11:52 | javer
          很不錯,收藏.  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-01-03 22:19 | socretes
          我測試client端的驗證,但是我發現其實根本是 虛的,我可以斷定表單依然提交到了后臺然后才進行驗證的,我不知道這里是否有人真正實現過。
          我發現的問題是,雖然驗證js代碼都生成了,但是不能執行,原因是找不到clearErrorMessages(form); 方法,而且我觀察可能是要加載的<script type="text/javascript" src="/testss1/struts/xhtml/validation.js"></script> 找不到的緣故,因為這個目錄根本就不存在,testss1是本人測試的應用。

          望這里有高手回答我疑惑,萬分感激??!
          能給我郵件最好: yuchw(at)capitek.com.cn  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2008-01-10 16:22 | bill
          謝謝您提供給我們這么好一篇文章,對我最近的工作帶來了很大幫助。

          有個小問題:在深入理解一段時間后,發現struts2的校驗流程比您描述的還要復雜一點(您文章文章中的流程圖),應該是js+攔截器1+攔截器2三個階段。  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2008-01-18 13:26 | song
          @zouzhihua
          我也遇到了,你解決了嗎?  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-01-29 15:56 | 小周
          請問如何才能修改struts 2.0中錯誤顯示的位置呢。就是用驗證框架后返回到頁面上顯示的報錯信息,
          默認是顯示控件的上方(紅色),但是我現在想讓它顯示在控件的右邊。
          如何處理.......  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-01-29 15:57 | 小周
          這個問題有點急,項目里面要用。
          哎找了很多資料都沒有找到。
          請大家幫我一下!
          謝謝了  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-02-02 15:19 | 日本の項目に対する新人
          需要在指定位置輸出錯誤信息時,form主題theme不能設置成默認,應是simple,默認的主題會在每個控件上面輸出錯誤信息。然后在你需要輸出錯誤信息的地方用
          <s:fielderror>
          <s:param value="%{'fieldname'}"/></s:fielderror>  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-02-14 15:51 | happy
          我是剛剛接觸struts2.0
          我寫的驗證但是沒有反映,也沒有錯誤  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-03-04 16:41 | 小周
          @日本の項目に対する新人
          這個方法可以,但是頁面的格式和布局不是很好看,有沒有方法讓框架產生的HTML頁面顯示錯誤信息時不產生<ui><li>標簽呢?  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-03-04 16:43 | 小周
          <s:fielderror>
          <s:param value="%{'fieldname'}"/></s:fielderror>

          上面的方法很好。
          但是頁面的格式和布局不是很好看,有沒有方法讓框架產生的HTML頁面顯示錯誤信息時不產生<ui><li>標簽呢?   回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2008-03-05 10:56 | Nick
          @mz

          原因是在校驗配置文件***-validation.xml中使用了package.properties中消息鍵,該消息資源中的消息在不調用Action是不能使用的,只有調用Action,該頁面對應的校驗配置文件***-validation.xml才能使用了package.properties中消息鍵。所以直接調用ordernew.jsp是不行的  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2008-03-05 10:57 | Nick
          @test
          原因是在校驗配置文件***-validation.xml中使用了package.properties中消息鍵,該消息資源中的消息在不調用Action是不能使用的,只有調用Action,該頁面對應的校驗配置文件***-validation.xml才能使用了package.properties中消息鍵。所以直接調用ordernew.jsp是不行的  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2008-03-05 10:57 | Nick
          @zouzhihua

          原因是在校驗配置文件***-validation.xml中使用了package.properties中消息鍵,該消息資源中的消息在不調用Action是不能使用的,只有調用Action,該頁面對應的校驗配置文件***-validation.xml才能使用了package.properties中消息鍵。所以直接調用ordernew.jsp是不行的  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-04-25 11:10 | 懶人
          感謝樓主百忙中給我們整理資料  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-05-13 15:21 | Min
          @Nick
          是的,可以改為
          < action name ="HelloWorld_*" class ="tutorial.HelloWorld" method="{1}">
          < result > /HelloWorld.jsp </ result >
          < result name ="input" > /HelloWorld.jsp </ result >
          </ action >
          然后訪問
          http://localhost:8080/Struts2_Validation/HelloWorld_input.action  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-05-14 18:04 | 類風
          請問在ActionName-validation.xml中如何對double類型的變量進行驗證,我是這樣寫的
          <field name="price">
          <field-validator type="conversion" short-circuit="true">
          <param name="repopulateField">true</param>
          <message>價格必須是數字類型</message>
          </field-validator>
          <field-validator type="double" >
          <param name="min">1</param>
          <message>價格必須大于1元</message>
          </field-validator>
          </field>

          它默認在文本框中顯示0.0 ,價格的范圍還是驗證不了,請問這到底是什么原因,我該如何解決?  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-05-22 15:20 | oskin
          樓主您好,我是struts2新手.在調試你上面給的校驗框架的那個例子的時候,出現問題了.代碼都是照搬過來的,但是在我這執行就是不正確,不知道為什么?頭大!
          錯誤代碼如下:

          2008-5-22 15:08:34 org.apache.struts2.components.Form evaluateExtraParamsServletRequest
          警告: No configuration found for the specified action: 'ValidationAction.action' in namespace: '/'. Form action defaulting to 'action' attribute's literal value.

          這個警告會出來兩遍~~然后程序是沒有執行校驗,隨便輸入什么值都沒有執行action...
          當我把<s:form>換成普通的<form action=...>時,上面的錯誤警告就沒了,但是還是沒有執行到action.只有把ValidationAction-validation.xml挪到別的地方,action才會被執行...

          另外我把<s:form action="ValidationAction.action">寫成這樣才能找到action,看到一些文章說是不需要寫上.action的,我不知道哪里設置~~

          問題比較多,希望能幫幫忙,謝謝了.如果可能的話,能不能把上面的例子項目給發到我郵箱? oskin2002@gmail.com 再次感謝.

            回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-05-22 17:35 | oskin
          補充一下,上面那個警告是在刷新Input.jsp的時候就出現的  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2008-05-26 12:02 | kevin
          submit后提示Invalid field value for field "loc".這是為什么啊?  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-07-09 13:04 | kane82
          關于struts2的驗證。我在做的demo的時候碰到這么個問題,struts.xml文件的input配置jsp頁面沒有問題,但是如果配置input跳到action的話,怎么也不能跳過去。
          請問LZ該怎么解決這個問題??!  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-07-28 18:33 | se
          @kevin
          用局部資源 全局的無法找到  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2008-08-06 17:37 | matrix
          @Max
          文中“...Struts 2.0的校驗框架自動會讀取該文件,但這樣就會引出一個問題——如果我的Action繼承其它的Action類,而這兩個Action類都需要對表單數據進行校驗,那我是否會在子類的配置文件(Xxx-validation.xml)中復制父類的配置嗎?答案是不,因為...”

          怎么我看了后面的解釋,我覺得你應該說“答案是肯定的”,怎么是“不”呢?
          因為照你的意思是,先找父類配置,然后再找子類(自己)配置,不正是你所說的復制父類的配置嗎???  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-08-12 11:11 | xmy
          @日本の項目に対する新人
          這個方法好像不行啊,我試了下,可是錯誤提示還是在頂上,倒是設置了theme=“simple”后我的標簽什么的都沒了  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2008-10-21 20:01 | xiaosong
          看到您的博客收獲很多,文章寫的非常詳細,很容易理解,祝博客越來越好  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2009-01-18 22:37 | shuzigui
          我運行你的第二個例子時,在里面輸入了字符串,結果報錯是:
          root cause

          org.apache.jasper.JasperException: org.apache.jasper.JasperException: File "/struts-tags " not found

          請問這是怎么回事,如果不輸入可以正常運行  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2009-04-22 09:36 | jezz
          呵呵不錯!  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2009-07-01 10:26 | dfd
          sfsafasf  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2009-10-17 00:42 | Martson
          @socretes
          遇到同樣的問題,不知道為什么。  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2010-09-26 10:45 | 風里面
          麻煩也發我一份 謝謝 public_private@163.com  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2010-11-14 15:35 |
          @kane82
          這個問題,和你寫了一個死循環沒有區別。  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2011-03-29 00:42 | 劉軒
          你好,我想問個事,就是我在試用框架驗證時 我的struts.xml中action節點是這樣的<action name="*_metaAction" class="com.ewaytec.merchant.product.action.AddAndEditMetaAction" method="{1}" > 那我那個驗證配置文件的名字怎么命名?  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2013-04-10 11:15 | tang
          要不您發個源碼給我吧,ianafollow@163.com,謝謝!  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation) 2013-11-08 15:40 | 胡應
          怎么去掉圓點兒啊?  回復  更多評論
            
          # re: 在Struts 2.0中實現表單數據校驗(Validation)[未登錄] 2014-04-08 12:56 | 李林
          怎么去掉圓點兒??!  回復  更多評論
            
          評論共2頁: 1 2 下一頁 
          主站蜘蛛池模板: 什邡市| 会东县| 晋宁县| 海晏县| 文昌市| 饶阳县| 保靖县| 修武县| 钟祥市| 嘉善县| 泊头市| 左云县| 弥渡县| 泸州市| 临沂市| 呼伦贝尔市| 兴国县| 通辽市| 攀枝花市| 嫩江县| 中西区| 彩票| 平谷区| 丹江口市| 嘉定区| 洞口县| 华亭县| 滨海县| 恩平市| 越西县| 东乡族自治县| 平顶山市| 合阳县| 化隆| 左云县| 和静县| 凉山| 普格县| 临朐县| 巴林右旗| 沿河|