Java Struts 2 REST和验证

Java Struts 2 REST和验证,java,validation,rest,struts2,Java,Validation,Rest,Struts2,我正在使用Struts 2和REST插件。Struts 2中的验证是ClassName-actionAlias-Validation.xml。但是,使用REST插件时,操作别名始终为/。例如OrdersController->/orders->OrdersController-orders-validation.xml。 如何根据REST方法获得不同的验证?主要是,我想对update()方法和create()方法分别进行一种验证。您考虑过吗?这样就更容易将它们与正确的方法联系起来。您考虑过吗?这

我正在使用Struts 2和REST插件。Struts 2中的验证是ClassName-actionAlias-Validation.xml。但是,使用REST插件时,操作别名始终为/。例如OrdersController->/orders->OrdersController-orders-validation.xml。
如何根据REST方法获得不同的验证?主要是,我想对update()方法和create()方法分别进行一种验证。

您考虑过吗?这样就更容易将它们与正确的方法联系起来。

您考虑过吗?这使得将它们与正确的方法联系起来更加简单。

啊,我不知道您可以对特定的方法使用基于注释的验证。我没怎么用Struts。谢谢

但是,我必须修改struts.xml以允许对不同方法进行不同的验证(validateAnotatedMethodOnly必须为true)。下面是它的外观:

<?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>
    <constant name="struts.convention.action.suffix" value="Controller" />
    <constant name="struts.convention.action.mapAllMatches" value="true" />
    <!-- Set to "default" instead of "rest-default" -->
    <constant name="struts.convention.default.parent.package"
        value="default" />

    <constant name="struts.convention.package.locators" value="rest" />

    <package name="default" extends="rest-default">
        <interceptors>
            <interceptor-stack name="restDefaultStack">
                <interceptor-ref name="exception" />
                <interceptor-ref name="alias" />
                <interceptor-ref name="servletConfig" />
                <interceptor-ref name="messages">
                    <param name="operationMode">AUTOMATIC</param>
                </interceptor-ref>
                <interceptor-ref name="prepare" />
                <interceptor-ref name="i18n" />
                <interceptor-ref name="chain" />
                <interceptor-ref name="debugging" />
                <interceptor-ref name="profiling" />
                <interceptor-ref name="actionMappingParams" />
                <interceptor-ref name="scopedModelDriven" />
                <interceptor-ref name="modelDriven">
                    <param name="refreshModelBeforeResult">true</param>
                </interceptor-ref>
                <interceptor-ref name="fileUpload" />
                <interceptor-ref name="checkbox" />
                <interceptor-ref name="staticParams" />
                <interceptor-ref name="params">
                    <param name="excludeParams">dojo\..*</param>
                </interceptor-ref>
                <interceptor-ref name="rest" />
                <interceptor-ref name="conversionError" />
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel,browse,index</param>
                    <!-- Modified! -->
                    <param name="validateAnnotatedMethodOnly">true</param>
                </interceptor-ref>
                <interceptor-ref name="restWorkflow">
                    <param name="excludeMethods">input,back,cancel,browse,index</param>
                </interceptor-ref>
            </interceptor-stack>

        </interceptors>
    </package>
</struts>

自动的
真的
道场\*
输入、返回、取消、浏览、索引
真的
输入、返回、取消、浏览、索引

啊,我不知道您可以对特定方法使用基于注释的验证。我没怎么用Struts。谢谢

但是,我必须修改struts.xml以允许对不同方法进行不同的验证(validateAnotatedMethodOnly必须为true)。下面是它的外观:

<?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>
    <constant name="struts.convention.action.suffix" value="Controller" />
    <constant name="struts.convention.action.mapAllMatches" value="true" />
    <!-- Set to "default" instead of "rest-default" -->
    <constant name="struts.convention.default.parent.package"
        value="default" />

    <constant name="struts.convention.package.locators" value="rest" />

    <package name="default" extends="rest-default">
        <interceptors>
            <interceptor-stack name="restDefaultStack">
                <interceptor-ref name="exception" />
                <interceptor-ref name="alias" />
                <interceptor-ref name="servletConfig" />
                <interceptor-ref name="messages">
                    <param name="operationMode">AUTOMATIC</param>
                </interceptor-ref>
                <interceptor-ref name="prepare" />
                <interceptor-ref name="i18n" />
                <interceptor-ref name="chain" />
                <interceptor-ref name="debugging" />
                <interceptor-ref name="profiling" />
                <interceptor-ref name="actionMappingParams" />
                <interceptor-ref name="scopedModelDriven" />
                <interceptor-ref name="modelDriven">
                    <param name="refreshModelBeforeResult">true</param>
                </interceptor-ref>
                <interceptor-ref name="fileUpload" />
                <interceptor-ref name="checkbox" />
                <interceptor-ref name="staticParams" />
                <interceptor-ref name="params">
                    <param name="excludeParams">dojo\..*</param>
                </interceptor-ref>
                <interceptor-ref name="rest" />
                <interceptor-ref name="conversionError" />
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel,browse,index</param>
                    <!-- Modified! -->
                    <param name="validateAnnotatedMethodOnly">true</param>
                </interceptor-ref>
                <interceptor-ref name="restWorkflow">
                    <param name="excludeMethods">input,back,cancel,browse,index</param>
                </interceptor-ref>
            </interceptor-stack>

        </interceptors>
    </package>
</struts>

自动的
真的
道场\*
输入、返回、取消、浏览、索引
真的
输入、返回、取消、浏览、索引