java - 不使用操作链接在目标操作中设置实例成员值?

标签 java struts2

这是我使用 Action 链的 struts 2 流程

JSP--->Action1--->Action2--->ResultJsp

对于 Action 链接,我的理解是请求从 Action 1转发到 Action 2。所以如果我将一些参数从 Action 1传递到 Action 2 它应该设置在新 Action 实例变量中(/为新 Action 创建的值堆栈)。但它没有发生

下面是我的操作代码1

@Result(name = "displayEmployee",type = "chain",
        params = {
            "namespace", "/employee",
            "actionName", "Employee-lookup!search",
            "empMode", "true"

        })


@Action("display-employee!displayEmployee")
  public String displayEmployee() {
    return "displayEmployee";
  }

现在在操作 2(即 display-employee)中,我有名为 empMode 的 boolean 属性。但我得到的值为 false,尽管我应该得到它 true 因为我将它作为结果注释中的属性传递。根据我对 Action 链的理解,所有请求参数都是 从action1转发到action2。基本上为 action2 创建了新的值堆栈,其中包含存在的变量 行动中1.那么为什么在操作 2 中没有为 empMode 属性设置值 true 呢?

最佳答案

我认为你不能做到这一点,没有提到能够使用链结果类型传递附加参数:http://struts.apache.org/release/2.3.x/docs/action-chaining.html

结果是链类型...因此它将需要解释和处理您的参数,因为此后将开始一个新操作。但是链没有这个设施(看源码):http://grepcode.com/file/repo1.maven.org/maven2/org.apache.struts.xwork/xwork-core/2.3.1.1/com/opensymphony/xwork2/ActionChainResult.java

如果这是正常的重定向,您可以将这些参数添加到请求中,就像您所做的那样。

换句话说,将所需的属性添加到操作中,链将执行您需要的操作,因为链结果没有工具来处理“命名空间”和“操作”之外的属性。

关于java - 不使用操作链接在目标操作中设置实例成员值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15159827/

相关文章:

java - 将参数传递给struts2中的url?

java - Struts 中的预选值 <s :select> tag?

java - 如何在 struts2 中映射长 REST url——使用 struts2 rest 插件

java - 或 selenium xpath 中的条件

java - For Loop 延迟不工作 Android

java - struts2,转换s :select list to display Tag column

java - struts2不加载资源文件

java - 通过 eclipse 创建的 BIRT 报告在执行时抛出错误

java - 将元数据库连接到 SQL Server

java - spring 启动连接到 localhost 数据库