参考官方文档:http://struts.apache.org/docs/alias-interceptor.html
别名拦截器 Alias Interceptor
它的作用是:给参数起一个别名,可用于在action链中以不同的名字共享同一个参数,也可用于把http请求参数以不同的名字映射到action里。
Action的别名表达式应采用#{ “name1” : ”alias1” , “name2” : “alisa2” }的形式。 这意味着假设一个action(或栈中的其他东西)具有名为name1的表达式的值,并且应用此拦截器的操作具有一个名为alias1的设置器,alias1将使用name1的值进行设置。
参数:
aliasesKey,要查找别名映射的action参数的名称(默认值是aliases)
示例:
<action name="someAction" class="com.examples.SomeAction">
<!-- The value for the foo parameter will be applied as if it were named bar -->
<param name="aliases">#{ 'foo' : 'bar' }</param>
<interceptor-ref name="alias"/>
<interceptor-ref name="basicStack"/>
<result name="success">good_result.ftl</result>
</action>
下面通过实例来说明在action链中以不同的名字共享参数
struts.xml
<action name="student" class="com.zhidisoft.action.StudentAction">
<param name="aliases">#{'t_id':'s_id'}</param>
<interceptor-ref name="alias" />
<interceptor-ref name="basicStack" />
<result>/index.jsp</result>
</action>
<action name="teacher" class="com.zhidisoft.action.TeacherAction">
<result type="chain">student</result>
</action>
对应的action类:
com.zhidisoft.action.StudentAction
public class StudentAction extends ActionSupport {
private String s_id;
public String execute(){
return SUCCESS;
}
public String getS_id() {
return s_id;
}
public void setS_id(String s_id) {
this.s_id = s_id;
}
}
com.zhidisoft.action.TeacherAction
public class TeacherAction extends ActionSupport {
private String t_id;
public String execute(){
return SUCCESS;
}
public String getT_id() {
return t_id;
}
public void setT_id(String t_id) {
this.t_id = t_id;
}
}
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML>
<html>
<head>
<title>首页</title>
</head>
<body>
<s:property value="s_id"/>
<s:debug></s:debug>
</body>
</html>
现在访问 http://localhost/Alias/teacher.action?t_id=99 通过Debug可以看到 s_id 和t_id都赋值了。