如何将一个属性传递给我的struts2 java动作,该动作告诉我是否从一个URL路径/动作映射调用了该动作?
我想我可以在struts.xml中添加两个动作映射,但是使用相同的java动作,只需将一个标志传入动作。
答案 0 :(得分:5)
您需要使用<param/>
标记。我经常为处理添加和编辑实体的操作执行此操作,因为字段,验证和其他内容几乎相同。这是一个例子。
<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”,它将查询标志值,并相应地继续。