有关java编程

zodiac的学习笔记

统计

留言簿(1)

阅读排行榜

评论排行榜

关于struts2的几个问题

最近正在用struts+spring+jpa开发项目,看到这篇文章,转在这里,有备无患。

原文地址:http://www.blogjava.net/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 阅读(276) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: