【问题标题】:Struts2: interceptor and parametersStruts2:拦截器和参数
【发布时间】:2010-09-29 19:15:57
【问题描述】:

我用 Struts 2 做了一些页面。(J2EE 项目) 在我尝试添加拦截器之前一切正常。

拦截器似乎删除了 jsp 发送的我的类操作和参数的所有属性,其 url 如下:action?param=xxx

这里是拦截器:

public class SessionInterceptor extends AbstractInterceptor{    
    @Override
    public String intercept(ActionInvocation invocation) throws Exception {

        return invocation.invoke();     
}

这里是struts.xml:

    <action name="movefc_ShowFjt" class="struts2.ShowFjtAction" method="movefc">

        <interceptor-ref name="sessionInterceptor"></interceptor-ref>
        <result name="input" type="dispatcher">jsp/showFjt.jsp</result>
        <result name="success" type="dispatcher">jsp/showFjt.jsp</result> 
    </action>    

在集体诉讼中,

public class ShowFjtAction extends ActionSupport {


private String param;
private Personne p;

param 属性永远不会从 jsp 接收值(拦截器关闭时可以)。更糟糕的是,集体诉讼中的其他属性似乎被删除了。 这是拦截器的 return invocation.invoke(); 的正常效果吗? 我能做些什么来解决这个问题吗?

【问题讨论】:

  • 如何定义这个拦截器?你包括 defaultStack 吗?

标签: struts2


【解决方案1】:

你定义你自己的拦截器是你导致所有默认拦截器被丢弃吗?

您是否应该定义一个包含您的拦截器和默认堆栈的拦截器堆栈?

<package name="default" extends="struts-default">
   <interceptors>
        <interceptor name="sessionInterceptor" class="SessionInterceptor"/>
        <interceptor-stack name="myStack">
           <interceptor-ref name="sessionInterceptor"/>
        </interceptor-stack>
    </interceptors>

<action name="movefc_ShowFjt"
     class="struts2.ShowFjtAction">
         <interceptor-ref name="myStack"/>
         <result name="input" type="dispatcher">jsp/showFjt.jsp</result>
         <result name="success" type="dispatcher">jsp/showFjt.jsp</result> 
</action>

【讨论】:

  • 第一个测试表明你是对的。我认为 Struts.xml 中的 是可选的,但事实上,您似乎必须使用它。
  • ParamatersInterceptor 从您的 jsp 页面获取值并将它们设置在操作字段中。同样,其他拦截器还有其他重要的事情要做。了解内置拦截器的功能以及删除或更改任何拦截器顺序的影响是很好的。
【解决方案2】:

整个概念解释如下

1] 首先,当用户不编写任何拦截器时,将使用 struts-default.xml 中定义的拦截器。它是在struts-core.jar中定义的,它是通过扩展我们的package xml标签中的“struts-default”来实现的。

2] 当用户编写自己的拦截器时,如果您在 sessionInterceptor ref name 之后添加一个模式代码块,即 interceptor-ref name="defaultStack" 将解决您的问题。

在尝试此操作之前,请尝试解压缩 struts-core.jar 并继续您的实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 2011-07-03
    • 2012-09-03
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多