0

我正在尝试使用使用 XML 的 Struts2 验证来检查客户输入的各种字段。我的struts.xmlextends struts-default,我有一个非常简单的操作类TestActionextends ActionSupport,但它不起作用。

如果有人能够帮助我了解我所缺乏的东西,我将非常感激。

这是我所拥有的:

CustomerAction-validation.xml

<?xml version="1.0" encoding="UTF-8"?>

  <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
    <field name="customerName">
        <field-validator type="requiredstring">
            <message>Required</message>
        </field-validator>
    </field>
</validators>

struts.xml

<action name="addCustomer" class="com.yell.hibu.action.CustomerAction"
            method="execute">
            <interceptor-ref name="validation"/> 
             <param name="excludeMethods">  
                    input,back,cancel,browse  
                </param>
            <interceptor-ref name="fileUpload">
                <param name="maximumSize">2097152</param>
                <param name="allowedTypes">
                    image/png,image/gif,image/jpeg,image/pjpeg
                </param>
            </interceptor-ref>
            <interceptor-ref name="defaultStack"></interceptor-ref>
            <result name="success">/success.jsp</result>
            <result name="input">/registration.jsp</result>
        </action>

在这里,我只有 1 个字段的 Registration.jsp

<s:form action="addCustomer" id="register-form" method="post"  validate="true" theme="xhtml" enctype="multipart/form-data">
<s:actionerror/>
<s:fielderror/>
<s:textfield name="customer.customerName" label="Customer Name:" cssClass="tooltip"  title="Max 10 characters allowed." maxlength="10"/>

4

1 回答 1

1

您的

<interceptor-ref name="validation"/> 

是自闭的,那么

<param name="excludeMethods">  
        input,back,cancel,browse  
</param>

永远不会被阅读。

Validation Interceptor应该在之后 Params Interceptor运行,如文档中的示例所示。

同样,根据文档,

此拦截器通常是堆栈中应用的最后一个(或倒数第二个)拦截器之一,因为它假定所有值都已在操作上设置。

然后,尝试这样做:

<action name="addCustomer" class="com.yell.hibu.action.CustomerAction" 
        method="execute">

    <interceptor-ref name="defaultStack"></interceptor-ref>

    <interceptor-ref name="validation"> 
        <param name="excludeMethods">  
            input,back,cancel,browse  
        </param>
    </interceptor-ref>

    <interceptor-ref name="fileUpload">
        <param name="maximumSize">2097152</param>
            <param name="allowedTypes">
                image/png,image/gif,image/jpeg,image/pjpeg
            </param>
    </interceptor-ref>

    <result name="success">/success.jsp</result>
    <result name="input">/registration.jsp</result>
</action>

如果它不起作用,也发布您的 JSP 和 Action。

希望有帮助

于 2013-03-14T12:51:20.103 回答