有關java編程

          zodiac的學習筆記

          統計

          留言簿(1)

          閱讀排行榜

          評論排行榜

          關于struts2的幾個問題

          最近正在用struts+spring+jpa開發項目,看到這篇文章,轉在這里,有備無患。

          原文地址:http://www.aygfsteel.com/apple0668/archive/2008/12/03/244209.html
          作者:apple0668
          關于開發模式引發的問題:

          在使用struts2中,為了方便調試,通常struts.properties文件中把開發模式設置為true。當表單里面的數據為空的時候提交,由于配置了validation校驗框架,頁面被攔截,有提示信息。控制臺輸出如下:
          2008-12-3 21:10:39 com.opensymphony.xwork2.interceptor.ParametersInterceptor setParameters
          嚴重: ParametersInterceptor - [setParameters]: Unexpected Exception caught setting 'age' on 'class org.mmc.struts2.action.RegisterAction: Error setting expression 'age' with value '[Ljava.lang.String;@b70648'
          2008-12-3 21:10:39 com.opensymphony.xwork2.validator.ActionValidatorManagerFactory <clinit>
          信息: Detected AnnotationActionValidatorManager, initializing it...


          控制臺出錯信息分析:
          由于配置文件中繼承了struts-default.xml文件
          其中struts-default.xml中的代碼片段為:
          <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>

          由于配置了validation校驗框架部分片段:

          原因是輸入類型不匹配,這個出錯信息是由于開發模式設置為true,把開發模式設置為false就不會產生這個錯誤信息。這個是LOG給的控制臺錯誤,方便用戶調試使用,并不影響程序的正常運行。

          <field name="age">
                  
          <field-validator type="required">
                      
          <message>age should not be blank!</message>
                  
          </field-validator>
              
                  
          <field-validator type="int">
                      
          <param name="min">1</param>
                      
          <param name="max">150</param>
                      
          <message>age should be between ${min} and ${max}</message>
                  
          </field-validator>
              
          </field>

          另外

          Struts2基于注解的校驗默認是對一個Action(也就是對一個Class的校驗),但有些時候單獨需要驗證其中的一個Method,這個時候就需要修改下默認的Validation攔截器.具體代碼如下:

                          <interceptor-ref name="validation">
                              
          <param name="validateAnnotatedMethodOnly">
                                  true
                              
          </param>
                              
          <param name="excludeMethods">
                                  input,back,cancel
                              
          </param>
                          
          </interceptor-ref>
          這樣就只會驗證Method了.

          posted on 2008-12-05 16:49 Zodiac 閱讀(283) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 邯郸县| 乐业县| 杭锦后旗| 宝丰县| 宁乡县| 邯郸市| 布拖县| 仁化县| 灵寿县| 盘锦市| 红原县| 米林县| 凯里市| 剑河县| 梅州市| 株洲市| 洪湖市| 长沙县| 渝中区| 大姚县| 年辖:市辖区| 明光市| 稷山县| 泽州县| 元朗区| 伊宁县| 年辖:市辖区| 古蔺县| 江阴市| 华宁县| 西丰县| 龙陵县| 忻州市| 电白县| 和政县| 大同县| 横峰县| 洛宁县| 湖南省| 甘谷县| 乌鲁木齐市|