最近接到公司的一个开发需求,具体是这样的:
需求一共涉及两个页面:
一个是组管理页面,然后点击组名就可以进入到另一个页面:组员管理页面。这里面就涉及到了组名的值传递问题。因为公司用的框架是struts2,也就是说问题归结为:在struts框架的传值问题。
struts2页面跳转传值
1、页面跳转
假设需要从A页面跳转到B页面,在A页面中用如下语句实现跳转:
<script type="application/javascript">
function dofarward() {
window.location.href="action1_forward.action?id="+id;
}
</script>
不需要传值时,修改为:
<script type="application/javascript">
function dofarward() {
window.location.href="action1_forward.action";
}
</script>
2、action传值方式
(1)页面间需要传值
<result type="chain" name="action2">action2</result>
(2)页面直接不需要传值
<result type="redirectAction" name="action2">action2</result>
3、具体内容
(1)struts.xml中的配置
action跳转方式中”chain“可以保留request对象,而redirect则不能保留。
<action name="action1_*" class="com.ysy.Action1" method="{1}">
<result type="chain" name="aciton2">action2_list</result>
<result type="redirectAction" name="action2">action2_list</result>
</action>
<action name="action2_*" class="com.ysy.Action2" method="{1}">
<result name="list">B.jsp</result>
</action>
(2)action1类的内容
public class Action1 {
String id = "1";
//id为需要在不同页面间传递的值,必须要有get和set方法,否则报错
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String forward(){
//获取request,并且将id的值传入request中
HttpServletRequest request = ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
request.setAttribute("id",id);
return "action2";
}
}
(3)action2类的内容
public class Action2 {
String id = "1";
//方便jsp页面取值
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String list(){
//获取request,并且获取id值
HttpServletRequest request = ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
id = requet.getAttribute("id");
return "list";
}
}
4 、B.jsp页面中获取id值
var id =${id};