Struts2中,action向Jsp页面传值的有关问题

Struts2中,action向Jsp页面传值的问题
为什么在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的标准,设置参数,传递参数方式,如下所示:

Struts2中,action向Jsp页面传值的有关问题

------解决思路----------------------
type="redirect"   这个不要,直接让他默认就好了,request对象只能保存在当前页和跳转的下一页。
------解决思路----------------------
首先 你用struts2框架  action写的有问题   其次jsp页面获取值应该用struts2标签 
------解决思路----------------------
引用:
这分数真土豪,试试把<result name="success" type="redirect">/test.jsp</result>改为<result name="success" >/test.jsp</result>原因如下

重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。
转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。


已有正解。

还有set get封装  界面可以用$表达式获取或用<s:标签
------解决思路----------------------
没看见楼主在页面取值啊
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

这分数真土豪,试试把<result name="success" type="redirect">/test.jsp</result>改为<result name="success" >/test.jsp</result>原因如下

重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。
转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。


已有正解。

还有set get封装  界面可以用$表达式获取或用<s:标签



嗯,发贴后就解决了。。。那个界面用$用引用时要不要额外的在引用什么包?


似乎是不需要的