编写javaBean:
package ch8;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Student ...{
private String name;
private boolean man;
private Classroom classroom;
private List book;
private Map food;
private Set tools;
public List getBook() ...{
return book;
}
public void setBook(List book) ...{
this.book = book;
}
public Classroom getClassroom() ...{
return classroom;
}
public void setClassroom(Classroom classroom) ...{
this.classroom = classroom;
}
public Map getFood() ...{
return food;
}
public void setFood(Map food) ...{
this.food = food;
}

public boolean isMan() ...{
return man;
}
public void setMan(boolean man) ...{
this.man = man;
}
public String getName() ...{
return name;
}
public void setName(String name) ...{
this.name = name;
}
public Set getTools() ...{
return tools;
}
public void setTools(Set tools) ...{
this.tools = tools;
}
}

package ch8;

public class Classroom ...{
private int number;
private String classname;
public String getClassname() ...{
return classname;
}
public void setClassname(String classname) ...{
this.classname = classname;
}
public int getNumber() ...{
return number;
}
public void setNumber(int number) ...{
this.number = number;
}
}
Action:
package ch8;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import com.opensymphony.webwork.interceptor.ServletRequestAware;
import com.opensymphony.webwork.interceptor.SessionAware;
import com.opensymphony.xwork.ActionSupport;

public class TestOGNL extends ActionSupport implements SessionAware,ServletRequestAware...{
private List members=new ArrayList();
private String type;
HttpServletRequest request=null;
Map session=null;
public void setSession(Map session) ...{
this.session=session;
//或者HttpServletRequest request=ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
}

public void setServletRequest(HttpServletRequest request) ...{
this.request=request;
}

public List getMembers() ...{
return members;
}

public void setMembers(List members) ...{
this.members = members;
}

public String getType() ...{
return type;
}

public void setType(String type) ...{
this.type = type;
}

public TestOGNL()...{
//构造测试数据
members.add(new Integer(1));
members.add(new Integer(2));
members.add(new Integer(3));
type="webwork";
}

public String execute() throws Exception ...{
// 构造测试数据
Classroom classroom=new Classroom();
classroom.setClassname("javeEE");
classroom.setNumber(22);
Student stu=new Student();
stu.setName("gaoxiang");
stu.setClassroom(classroom);
stu.setMan(true);
List books=new ArrayList();
books.add("j2se");
books.add("j2ee");
books.add("j2me");
stu.setBook(books);
Map foods=new HashMap();
foods.put("1", "apple");
foods.put("2", "orange");
stu.setFood(foods);
Set tools=new HashSet();
tools.add("bomb");
tools.add("rocket");
tools.add("wood");
stu.setTools(tools);
request.setAttribute("student", stu);
session.put("student", stu);
return SUCCESS;
}

}
xwork.xml
<action name="testOGNL" class="ch8.TestOGNL">
<result name="success">/ch8/list-students.jsp</result>
</action>
JSP:

<%...@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<%...@ taglib uri="webwork" prefix="ww"%>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
从Action中得到的数据<br>
type:<ww:property value="type"/><br>
members:
<ww:iterator value="members" status="status">
<ww:property value="members.get(#status.Index)"/>
</ww:iterator>
<br>
<br>
从request中得到的数据<br>
Student name:<ww:property value="#request.student.name"/><br>
Student is man:<ww:property value="#request.student.man"/><br>
Student books:
<ww:iterator value="#request.student.book" status="status">
<ww:property value="#request.student.book.get(#status.Index)"/>
</ww:iterator><Br>
Student food:
<ww:property value="#request.student.food.get("1")"/>
<ww:property value="#request.student.food.get("2")"/><br>
Student classroom;
<ww:property value="#request.student.classroom.classname"/>
<ww:property value="#request.student.classroom.number"/><br>
Student tools:
不知道该如何去遍历set,我用下面的方式,总是输出set.size()个set中最后的数值
<ww:iterator value="#request.student.tools.iterator" status="status">
<ww:property value="#request.student.tools.iterator.next"/>
</ww:iterator><Br>
<Br>
<br>
<br>
从session中得到的数据和从request中一致,只需要把相应的request换成session<br>
Student name:<ww:property value="#session.student.name"/><br>
Student is man:<ww:property value="#session.student.man"/><br>
Student books:
<ww:iterator value="#session.student.book" status="status">
<ww:property value="#session.student.book.get(#status.Index)"/>
</ww:iterator><Br>
Student classroom;
<ww:property value="#session.student.classroom.classname"/>
<ww:property value="#session.student.classroom.number"/><br>
Student food:
<ww:property value="#session.student.food.get("1")"/>
<ww:property value="#session.student.food.get("2")"/><br>
Student tools:
不知道该如何去遍历set,我用下面的方式,总是输出set.size()个set中最后的数值
<ww:iterator value="#session.student.tools.iterator" status="status">
<ww:property value="#session.student.tools.iterator.next"/>
</ww:iterator><Br>
<Br>
<br>
<br>
</body>
</html>
运行结果:
从Action中得到的数据
type:webwork
members: 1 2 3
从request中得到的数据
Student name:gaoxiang
Student is man:true
Student books: j2se j2ee j2me
Student food: apple orange
Student classroom; javeEE 22
Student tools: 不知道该如何去遍历set,我用下面的方式,总是输出set.size()个set中最后的数值 wood wood wood
从session中得到的数据和从request中一致,只需要把相应的request换成session
Student name:gaoxiang
Student is man:true
Student books: j2se j2ee j2me
Student food: apple orange
Student tools: 不知道该如何去遍历set,我用下面的方式,总是输出set.size()个set中最后的数值 wood wood wood
注:还是没有找到怎样遍历set的方法,看来只能把set转换成list或者array去显示了,因为这两个都可以根据标识定位每一个元素,而set只能迭代称iterator进行迭代,不能定位
本文介绍了一个使用OGNL表达式从Action传递数据到JSP页面的例子,并探讨了如何正确遍历Set集合的问题。
5768





