1.假设值栈栈顶对象是user(User user=new User("zhangsan"); ValueStack valueStack=ActionContext.getContext().getValueStack(); valueStack.push(user);)
在jsp页面想获取该user的name值,有以下两种方式:
<s:debug></s:debug> <br> <!--[0]表示栈顶对象,可以省略,[1]则表示栈顶对象下一个对象--> 用户名:<s:property value="[0].name" /> <br> 用户名:<s:property value="name" />
2.不要把得到的list对象放在栈顶,而是应该放在ActionContext中。
3.假设把list放在了session中(List<User> userList = new ArrayList<User>(); userList.add(new User("zhangsan")); userList.add(new User("lisi")); ServletActionContext.getRequest().getSession().setAttribute("userList", userList);)
在jsp页面想获取该list的对象的name值,代码:
<s:debug></s:debug> <s:if test="#session.userList!=null&&#session.userList.size>0"> <s:iterator value="#session.userList" id="user"> 用户名:<s:property value="#user.name" /> <br> </s:iterator> </s:if> <s:else> 出错 </s:else>备注:iterator中id属性必需,指定遍历的元素
由于是session,所以在用iterator的value属性取集合时要加#session,在用property的value属性输出时也要加#。
s:if 的test属性是布尔表达式,对集合对象进行判断,关键在于正确的表示集合对象,保持同iterator的value属性一致即可。
4.假设把单个对象放在了session中(ServletActionContext.getRequest().getSession().setAttribute("user", new User("liuneng"));)
在jsp页面想获取该user的name值,代码:
<s:debug></s:debug> 用户名:<s:property value="#session.user.name" />
5.假设把list放到ActionContext中(List<User> userList = new ArrayList<User>(); userList.add(new User("zhangsan")); userList.add(new User("lisi")); ActionContext.getContext().put("userList", userList);)
在jsp页面中获取该list的对象的name值,代码:
<s:debug></s:debug> <s:if test="#userList!=null&&#userList.size>0"> <s:iterator value="#userList"> <!--request可省--> 用户名:<s:property value="name" /> <br> </s:iterator> </s:if> <s:else> 出错 </s:else>
备注: s:if 的test属性同上
actionContext.put(key,value)方法作用相当于request.setAttribute(key,value)方法。
6.假设把单个对象放到了ActionContext中(ActionContext.getContext().put("user", new User("zhangsan"));)
在jsp页面中获取该user对象的name值,代码:
<s:debug></s:debug> 用户名:<s:property value="#request.user.name" /><!--request不可省-->