我有Struts2的问题
这是我的动作配置,在Action中执行roleDete之前,拦截器是调用的,但在此之后,输入的值丢失,没有id要删除,如果我删除了拦截器,那么id为删除存在,有人可以指导我解决这个问题吗?
<action name="roleDelete" method="roleDelete" class="com.webapp.role.action.RoleAction">
<interceptor-ref name="validateUser"/>
<result name="input" type="tiles">usertypePage</result>
<result name="success" type="redirect">usertypeForm</result>
</action>
由于
答案 0 :(得分:2)
听起来你已经定义了一个自定义的validateUser拦截器堆栈,它不包含必需的Struts 2拦截器。默认情况下,Struts 2会在每个请求上调用以下拦截器,除非您定义自己的堆栈(正如您所做的那样):
<interceptor-stack name="defaultStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="multiselect"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
我的建议是通过上面的列表并一次一个地添加它们,直到找出你需要正确填充你的请求变量。您可以在Struts 2 docs中了解有关拦截器的更多信息。
答案 1 :(得分:2)
<interceptors>
<interceptor name="vendorStoreInterceptor" class="br.org.myapp.actions.interceptors.VendorStoreInterceptor"></interceptor>
<interceptor-stack name="defaultStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="multiselect"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
<interceptor-stack name="mainStack">
<interceptor-ref name="vendorStoreInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mainStack"/>
-
使用它。你必须包括你的拦截器和defaultStack之后(用我的'vendorStoreInterceptor'和'defaultStack'观察最后一个'interceptor-stack')。
就是这样!