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

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

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

    隨筆-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 閱讀(51491) 評論(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 | 陳利
    如果在表單中填入數字,而且是必填的,如何寫配置文件啊?  回復  更多評論
      
    # 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 下一頁 
    主站蜘蛛池模板: 国产精品国产亚洲精品看不卡| 色多多免费视频观看区一区| 亚洲av永久无码嘿嘿嘿| 亚洲爆乳无码专区www| 久久综合九色综合97免费下载| 韩国免费一级成人毛片| 又粗又硬又黄又爽的免费视频| 久久久久亚洲?V成人无码| 亚洲娇小性xxxx色| 国内精品一级毛片免费看| 日韩精品免费一区二区三区| 亚洲成色999久久网站| a高清免费毛片久久| 国产精品免费看久久久久| 亚洲老熟女@TubeumTV| 国产羞羞的视频在线观看免费| 国产免费卡一卡三卡乱码| 亚洲免费观看网站| 精品熟女少妇av免费久久| 亚洲第一AAAAA片| 久久久久免费视频| 中文字幕精品无码亚洲字| 日本黄页网址在线看免费不卡 | 亚洲国产情侣一区二区三区| 最近2019中文免费字幕在线观看| 国产乱弄免费视频| 国产精品亚洲一区二区三区久久 | xxxxx做受大片在线观看免费| 国产成人aaa在线视频免费观看| 亚洲日韩一区二区一无码| av无码国产在线看免费网站| 亚洲美女激情视频| 嫩草视频在线免费观看| 亚洲精品无码久久| 又粗又大又硬又爽的免费视频| 一区二区三区在线免费观看视频| 浮力影院亚洲国产第一页| 国产无遮挡色视频免费观看性色| 精品亚洲一区二区| 日韩欧毛片免费视频| 国产亚洲日韩在线a不卡|