如何在Struts 2中动态设置静态参数的值

问题描述 投票:0回答:4

我想知道,是否可以动态地将值设置为静态参数

<action name="TestApp_*" class="test.TestApp" method="{1}">
   <param name="app_Id">Dynamic value here</param>
   <result name="input">WEB-INF/jsp/test/testView.jsp</result>
</action>

我试过了

<action name="TestApp_*" class="test.TestApp" method="{1}">
   <param name="app_Id">${app_Id}</param>
   <result name="input">WEB-INF/jsp/test/testView.jsp</result>
</action>

不工作。它将

${app_Id}
显示为常规文本。

java parameters struts2 ognl xml-configuration
4个回答
0
投票

请注意,它显示

${app_Id}
作为常规文本到底是什么意思。Struts2 提供了这种灵活性,您可以动态设置
param
值。

您只需在操作类中设置这些值,即可将它们用作占位符。

public class MyAction extends ActionSupport {
   private int app_Id;

   public String execute() {
      // you execute logic

      this.app_Id= 123;
      return SUCCESS;
   }

 // getter and setter for app_Id
}

您可以在结果配置中使用此

app_Id

 <action name="TestApp_*" class="test.TestApp" method="{1}">
       <param name="app_Id">${app_Id}</param>
       <result name="input">WEB-INF/jsp/test/testView.jsp</result>
</action>

您可以获得更多详细信息配置结果中的参数


0
投票

您可能已经(错误地)手动编写了 getter,而不是让 IDE 为您完成。

变量

app_Id;
必须有一个吸气剂
getApp_Id()
,而你可以有类似
getapp_Id()
get_app_Id()
之类的东西......但是如果你不发布你的操作代码,我们怎么知道它?!

此外,考虑更改变量(从现在开始)以尊重约定,即希望它们采用驼峰式命名,而不是下划线分隔...然后

appId
表示变量,
getAppId()
表示 getter。


0
投票

尝试这样做..

<result type="redirect">
    <param name="location">WEB-INF/jsp/test/testView.jsp</param>
    <param name="inputName">app_Id</param>
</result>

在jsp页面中你可以直接使用这个值就像

<s:properties value="app_Id">

试试这个。


-1
投票

看看

staticParams
拦截器

此拦截器使用操作配置中定义的静态参数填充操作。如果操作实现了

Parameterizable
,静态参数的映射也将直接传递给操作。静态参数将添加到请求参数映射中,除非
merge
设置为
false

参数通常使用

<param>
中的
struts.xml
元素定义。

它展示了如何将此拦截器配置到您的操作配置中。

例如:

<action name="someAction" class="com.examples.SomeAction">
    <interceptor-ref name="defaultStack">
         <param name="staticParams.parse">true</param>
         <param name="staticParams.overwrite">false</param>
    </interceptor-ref>
    <param name="num">${numValue}</param>
    <result name="success">good_result.ftl</result>
</action>

这使得拦截器能够从操作配置中解析 OGNL 表达式的参数值。

© www.soinside.com 2019 - 2024. All rights reserved.