我正在使用Struts 2和REST插件。 Struts 2中的验证是ClassName-actionAlias-validation.xml。但是,使用REST插件时,操作别名始终为/。例如OrdersController - > / orders - > OrdersController订单-validation.xml中。 如何根据REST方法获得不同的验证?主要是,我想要update()方法的一种验证和create()方法的另一种验证。
答案 0 :(得分:1)
您考虑过using annotations for the validations了吗?这使得将它们与正确的方法联系起来更简单。
答案 1 :(得分:0)
啊,我不知道您可以对特定方法使用基于注释的验证。我没有那么多使用过Struts。谢谢!
但是,我确实必须修改我的struts.xml以允许对不同方法进行不同的验证(validateAnnotatedMethodOnly必须为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>