Struts2标签——数据的获取和输出



Struts2标签——数据的获取和输出

最近开始用Struts2框架,使用Struts2标签也成了家常便饭了,本章主要总结下在使用过程中数据的获取和输出。

可能会有所遗漏,也可能会有所谬误,希望大家多指点、多交流,在使用过程中能更加清晰、熟练。

本文中统一前缀为s。前缀可配置

想知道在前台哪些数据是能获取到的,使用<s:debug></s:debug>是一种非常不错的方式。我们在jsp中加上debug,那么在前台就会显示这个页面能够获取到的数据,我们可以看到数据主要分为两大类:Value Stack Contents和Stack Context

Value Stack Contents: 值栈,存放表单中的值。ValueStack里面的东西先入后出,很多没有id的元素使用完之后就退栈了。可以直接引用,例如:
User类:

package com.dpc.test;

import java.util.Date;

public class User {
private Long id;
private String name;
private Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
action中

package com.dpc.test;

public class UserAction {
private User user;
private String searchName;
public String getSearchName() {
return searchName;
}
public void setSearchName(String searchName) {
this.searchName = searchName;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
在JSP中取得user对象中的内容和searchName如下:


<s:textfield name=”user.name” id=”name” />

<s:hidden name=”user.id” id=”id” />

<s:textfield name=”searchName” id=”searchName” />

输出:<s:property value=”%{user.name}” /> <s:property value=”%{searchName}” />
日期格式化输出,必须是Date类型的才能使用如下方式:

<s:date name=”user.date” format=”yyyy-MM-dd” />
StackContext: stack上下文,它包含一些列对象,包括request/session/attr/application map等,这些命名对象与根对象无关,访问这些对象需要使用#前缀指明。
request中的值:

<%request.getAttribute(“name”, “xxxx”);%>
获取:%{#request.name}
输出:<s:property value=”#request.name”/>
session中的值:

<%session.getAttribute(“name”);%>
<s:property value=”#session.name”/>
parameters中的值(传递的参数值):

<%request.getParameter(“name”);%>
<s:property value=”#parameters.name[0]“/>

http://www.tuicool.com/articles/MRfAfyn