通过struts.xml将属性传递给struts2动作

时间:2011-11-05 01:03:48

标签: struts2

如何将一个属性传递给我的struts2 java动作,该动作告诉我是否从一个URL路径/动作映射调用了该动作?

我想我可以在struts.xml中添加两个动作映射,但是使用相同的java动作,只需将一个标志传入动作。

2 个答案:

答案 0 :(得分:5)

您需要使用<param/>标记。我经常为处理添加和编辑实体的操作执行此操作,因为字段,验证和其他内容几乎相同。这是一个例子。

struts.xml中

<action name="users/add" class="AddEditUserAction">
  <param name="edit">false</param>
  <result name="input">/WEB-INF/jsp/addEditUser.jsp</result>
</action>

<action name="users/{username}/edit" class="AddEditUserAction">
  <param name="edit">true</param>
  <result name="input">/WEB-INF/jsp/addEditUser.jsp</result>
</action>

行动

public class AddEditUserAction {
  private boolean isEdit;

  // this is called by the struts.xml to set the value
  public void setEdit(final boolean edit) {
    isEdit = edit;
  }
}

为了使其工作,您需要堆栈中的静态参数拦截器(默认包含它)。

答案 1 :(得分:0)

我质疑设计。

我会通过在一个或两个映射的动作配置中指定一个方法来处理它。

方法会在操作中设置一个标志,并调用操作的“guts”,它将查询标志值,并相应地继续。