Struts2中,action向Jsp页面传值的有关问题
Struts2中,action向Jsp页面传值的问题
为什么在Action设置了setAttribute, 然后在jsp里面通过getAttribute为什么是空的?
struts的配置文件
Action
请求页面
最后在显示页面
我也查了些资料,可以用set get的方法对属性进行封装,只是不知道怎么jsp里面得到这个对象
------解决思路----------------------
在action中添加一个成员属性protect Map map = new HashMap();然后在你的方法中使用map.put(key,value);在jsp中使用${key}
------解决思路----------------------
我靠
居然和楼上撞头像了
楼主你的request是在哪里赋值的?
一般来说使用struts2 都是使用这种格式来传参给jsp
------解决思路----------------------
对了
<result name="success">/test.jsp</result>
type="redirect"这个去掉,否则会丢失request中值
------解决思路----------------------
假设你要往网页上传一个String aa = "aaa";的字符串,在action中this.getRequest().setAttribute("bb",aa);
前面加引号的bb是键值,后面的aa是字符串名字。
在你action(即你这里的<action name="testa" method="testA")跳转的页面上(即你这里的/test.jsp)用${bb}就可以取到String aa的值了。
------解决思路----------------------
type="redirect"是在result调用某个具体方法(method.do)的时候才使用重定向,你是跳转某个页面不需要写这个参数的
------解决思路----------------------
type="redirect"你用的redirect当然获取不到request里面的内容呀。
Servlet与JSP基础你可以看看呀,request.getDispatcher().forward()与response.redirect();
二者的区别里面都讲述到了啊。
------解决思路----------------------
这分数真土豪,试试把<result name="success" type="redirect">/test.jsp</result>改为<result name="success" >/test.jsp</result>原因如下
------解决思路----------------------
ls都回答了 我来围观下题主悬赏的分数
------解决思路----------------------
type="redirect" 这个是重定向 LZ应该用转发的!
------解决思路----------------------
楼上的都回答了。再补充一下,如果要使用转发,就把值放到session中也行,不过值会一直在,直到session生存周期消失才消失
------解决思路----------------------
有两个办法!!
------解决思路----------------------
第一种,排错法。
首先呢,你在这个方法里打个断点,Debug一下看有没有调用到。
另外呢,你用的是get方式请求,换成form表单提交试试,说不定是doGet和doPost的区别。
------解决思路----------------------
第二种,改成Struts2的标准,设置参数,传递参数方式,如下所示:
------解决思路----------------------
type="redirect" 这个不要,直接让他默认就好了,request对象只能保存在当前页和跳转的下一页。
------解决思路----------------------
首先 你用struts2框架 action写的有问题 其次jsp页面获取值应该用struts2标签
------解决思路----------------------
已有正解。
还有set get封装 界面可以用$表达式获取或用<s:标签
------解决思路----------------------
没看见楼主在页面取值啊
------解决思路----------------------
似乎是不需要的
为什么在Action设置了setAttribute, 然后在jsp里面通过getAttribute为什么是空的?
struts的配置文件
<action name="testa" method="testA"
class="cob.XX.action.ProductAction">
<result name="success" type="redirect">/test.jsp</result>
<result name="fail" type="redirect">/index.jsp</result>
</action>
Action
public String testA(){
request.setAttribute("test", "testtest");
return "success";
}
请求页面
<h2><a href="testa.action">test</a>
最后在显示页面
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
if(request.getAttribute("test") == null){
out.print("asdf");
}
%>
</body>
</html>
我也查了些资料,可以用set get的方法对属性进行封装,只是不知道怎么jsp里面得到这个对象
------解决思路----------------------
在action中添加一个成员属性protect Map map = new HashMap();然后在你的方法中使用map.put(key,value);在jsp中使用${key}
------解决思路----------------------
我靠
居然和楼上撞头像了
楼主你的request是在哪里赋值的?
一般来说使用struts2 都是使用这种格式来传参给jsp
public class CalAction extends ActionSupport{
private String test ;
public String getTest() {
return test;
}
public void setTest(String test) {
this.test = test;
}
public String testA(){
test = "testtest";
return "success";
}
}
------解决思路----------------------
对了
<result name="success">/test.jsp</result>
type="redirect"这个去掉,否则会丢失request中值
------解决思路----------------------
假设你要往网页上传一个String aa = "aaa";的字符串,在action中this.getRequest().setAttribute("bb",aa);
前面加引号的bb是键值,后面的aa是字符串名字。
在你action(即你这里的<action name="testa" method="testA")跳转的页面上(即你这里的/test.jsp)用${bb}就可以取到String aa的值了。
------解决思路----------------------
type="redirect"是在result调用某个具体方法(method.do)的时候才使用重定向,你是跳转某个页面不需要写这个参数的
------解决思路----------------------
type="redirect"你用的redirect当然获取不到request里面的内容呀。
Servlet与JSP基础你可以看看呀,request.getDispatcher().forward()与response.redirect();
二者的区别里面都讲述到了啊。
------解决思路----------------------
这分数真土豪,试试把<result name="success" type="redirect">/test.jsp</result>改为<result name="success" >/test.jsp</result>原因如下
重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。
转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。
------解决思路----------------------
ls都回答了 我来围观下题主悬赏的分数
------解决思路----------------------
type="redirect" 这个是重定向 LZ应该用转发的!
------解决思路----------------------
楼上的都回答了。再补充一下,如果要使用转发,就把值放到session中也行,不过值会一直在,直到session生存周期消失才消失
------解决思路----------------------
有两个办法!!
------解决思路----------------------
第一种,排错法。
首先呢,你在这个方法里打个断点,Debug一下看有没有调用到。
public String testA(){
request.setAttribute("test", "testtest");
return "success";
}
另外呢,你用的是get方式请求,换成form表单提交试试,说不定是doGet和doPost的区别。
------解决思路----------------------
第二种,改成Struts2的标准,设置参数,传递参数方式,如下所示:
------解决思路----------------------
type="redirect" 这个不要,直接让他默认就好了,request对象只能保存在当前页和跳转的下一页。
------解决思路----------------------
首先 你用struts2框架 action写的有问题 其次jsp页面获取值应该用struts2标签
------解决思路----------------------
已有正解。
还有set get封装 界面可以用$表达式获取或用<s:标签
------解决思路----------------------
没看见楼主在页面取值啊
------解决思路----------------------
似乎是不需要的