如何使用struts2控制转换错误

如何使用struts2控制转换错误,struts2,Struts2,我有一个表单,有3个字段,两个字符串(一个select和一个text字段)和一个int。当我在字段中放置字母或int(52.4或aaa)以外的其他内容时,我遇到了一个无法“捕获”的错误,我的select被取消,在消息框中,我收到了来自验证xml文件(法语)的消息,另一个是英语消息(我想是struts寄来的) tomcat中的错误: (ognl.OgnlValueStack 60 ) Error setting expression 'userSize' with value '[Ljava.l

我有一个表单,有3个字段,两个字符串(一个select和一个text字段)和一个int。当我在字段中放置字母或int(52.4或aaa)以外的其他内容时,我遇到了一个无法“捕获”的错误,我的select被取消,在消息框中,我收到了来自验证xml文件(法语)的消息,另一个是英语消息(我想是struts寄来的)

tomcat中的错误:

(ognl.OgnlValueStack  60 ) Error setting expression 'userSize' with value '[Ljava.lang.String;@14aa6c3'
消息框上出现错误:

Invalid field value for field "userSize".
test size
JSP代码:

<s:form action="sendUserCreation" method="POST">
<s:action namespace="/" name="civilityPicklist" executeResult="true"/><br />
<s:textfield name="lastName" /><br />
<s:textfield name="userSize" /><br />

我认为“转换”验证类型将“捕获”这类问题,但似乎不是……我的代码出了什么问题?

我已经快速查看了这一点,我认为出现双重消息的原因是,至少在我的情况下,转换错误可能会被处理两次,第一次由StrutsConversionErrorInterceptor处理,第二次由AnnotationValidationIntercept处理这两个拦截器都在struts默认堆栈中


从堆栈中删除StrutsConversionErrorInterceptor将删除Struts生成的消息,并将用户定义的消息保留为显示的唯一错误消息。但是,我还没有时间调查在Receptor中删除该消息的任何其他副作用。

您没有显示重要的部分,就像
userSi的其余部分一样ze
验证配置和操作中的属性声明/设置器。S2的版本是什么。另外,您是否尝试了
整数
而不是
int
?struts版本是2.2.3,验证配置中没有其他内容,如果我尝试使用Integer:/,我将在actionTry putt中使用getter/setter编辑我的帖子同时在中使用
int
验证;我将深入研究“转换”的原因验证器很时髦。你有没有一个我能从github得到的最简单的例子?不管怎样,我会在周末前查看它——验证器本身可能有问题。我尝试过放入
int
验证,但得到了相同的结果。我没有github帐户,我会看看这个。我认为这不是你的代码。我是ge@ConversionErrorFieldValidator注释存在完全相同的问题。两条消息,我也假设其中一条是Struts生成的,还有我的消息。我目前正在通过重写getFieldErrors()方法并删除不需要的消息来解决这一问题。因此我也对解决这一问题感兴趣。
<action name="createUser">
    <result>/jsp/user/create.jsp</result>
</action>
<action name="sendUserCreation" class="fr.action.UserAction" method="createUser">
    <result>/jsp/splash.jsp?messKey=${messKey}</result>
    <result name="input">/jsp/user/create.jsp</result>
</action>
<action name="civilityPicklist" class="fr.imaps.oxygene.portal.action.CivilityPicklistAction">
    <result>/jsp/user/civilityPicklist.jsp</result>
</action>
<validators>
    <field name="userSize">
        <field-validator type="conversion">
            <message>test size</message>
        </field-validator>      
    </field>
</validators>
private int userSize;

public int getUserSize() {
    return userSize;
}

public void setUserSize(int userSize) {
    this.userSize = userSize;
}