在Action中,
List list = new ArrayList();
list.add( new User("mike") );
list.add( new User("alreen") );
list.add( new User("mary") );
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute( "list", list );在JSP里
<s:iterator value="list" id="user" status="status">
${user.name } <br>
</s:iterator>
这里得不到这个值。
但是如果我把list作为action的属性,并生成get/set方法,JSP是可以得到的,
望各位大哥指教
List list = new ArrayList();
list.add( new User("mike") );
list.add( new User("alreen") );
list.add( new User("mary") );
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute( "list", list );在JSP里
<s:iterator value="list" id="user" status="status">
${user.name } <br>
</s:iterator>
这里得不到这个值。
但是如果我把list作为action的属性,并生成get/set方法,JSP是可以得到的,
望各位大哥指教
解决方案 »
- 老生常谈的话题中文乱码
- javaWEB项目session值为空
- weblogic下axis调用webservice异常
- struts的form中文乱码问题???
- 建立了一个bean,然后运行jsp出现下面的问题,请大侠指点!!!
- 大家来帮个忙阿。急阿。jsp中加css乱码的问题
- 在JavaBean中如何写代码可以使返回值(返回值是ResultSet类型的)可以用<c:forEach>标签循环读数据?
- BS系统 数据共享问题?
- 两个list求交集 求不出来
- servlet中performTask、doGet、doPost方法使用时机?刚学(Java)
- JSP的charset为UTF-8到gb2312的转换
- 关于Struts标签无法解析的问题
给上get set 方法。。
你用你的办法可以得到
那我想问下“#request.list"” 中的#表示什么含义呢,
还有网上我还看到 有%,& 这些是什么意思呢 ?
开发比较快
其实你还可以用
ActionContext.getContext().put("list",list);
直接<s:iterator value="list">就可以
不用写#request.list
这样不符合规范吧,一般都是保存在request范围的
还想问下,%, & 又是什么意思呢?
<s:iterator value="list" var="user" status="status"> <s:property value="user.name" <br>
我刚刚看了源码 经过测试 得出以下结论ActionContext.getContext().put("list",list);是把["list",list]这个键值对放到一个Map里
这个map在ActionContext里 其实就是在一个ThreadLocal里在jsp页面是怎样得到这个list的呢? 原因是通过下面这个类
org.apache.struts2.dispatcher.StrutsRequestWrapper这个类是HttpServletRequest的包装类
他重写了public Object getAttribute(String s)方法 这个方法将会被在页面中调用
在这个方法里 他首先在request里找有没有这个list 如果没有 他就在ActionContext的那个map里去找
所以在这里 request application里是没有list的 list是在一个ThreadLocal的map里
public class PersonAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware
{
private Map<String ,Object> request;
private Map<String ,Object> session;
private Map<String ,Object> application;
/**
* IOC,本来是由自己初始化,现在由struts2帮你初始化,这种是最常用的
* 这3个属性范围控制反转给struts2控制
*
*/
public String execute()
{
System.out.println("PersonAction22222222222222222");
request.put( "name", "MIKE" );
session.put( "password", "123456" );
application.put( "age", 20 );
return SUCCESS;
} public void setRequest( Map<String, Object> request )
{
this.request=request;
} public void setSession( Map<String, Object> session )
{
this.session=session;
} public void setApplication( Map<String, Object> application )
{
this.application=application;
}
}