1

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

<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}为常规文本。

4

4 回答 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>

您可以获取更多详细信息parameters-in-configuration-results

于 2013-09-10T03:45:26.653 回答
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">

尝试这个。

于 2013-09-11T09:50:01.613 回答
0

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

一个变量app_Id;必须有一个 getter getApp_Id(),而你可以有类似的东西getapp_Id()or get_app_Id()... 但是如果你不发布你的 Action 代码,我们怎么知道它?!

此外,考虑更改您的变量(从现在开始)以遵守约定,即希望它们采用驼峰式大小写,而不是下划线分隔......然后appId是变量和getAppId()吸气剂。

于 2013-09-10T08:02:25.513 回答
-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 表达式的参数值。

于 2013-09-10T08:47:55.027 回答