Struts2 2.5 用ognl表达式从action里面取值,显示在jsp页面,为什么不能根据性别取出对象呢?看下图
2017-12-31
struts2中使用的OGNL表达式在拿action中的值的时候无论如何都取不到。
UserAction.java 这个类查出了一个“lists”,也就是我在jsp页面中要取的值。
[java] view plain copy
package tm.change.action;
import java.util.ArrayList;
import java.util.List;
import tm.change.dao.UserDao;
import tm.change.dao.impl.UserDaoImpl;
import tm.change.domain.User;
public class UserAction {
private UserDao dao = new UserDaoImpl();
private List<User> lists = new ArrayList<>();
public String list(){
lists = dao.findObject(0, 2);
return "list";
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1px">
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>邮箱</th>
</tr>
</thead>
<tbody>
<s:iterator var="entity" value="lists">
<tr>
<td><s:property value="name" /></td>
<td><s:property value="age" /></td>
<td><s:property value="email" /></td>
</tr>
</s:iterator>
</tbody>
</table>
</body>
</html>
list.jsp
在这个页面上,我要取上面这个类中的lists,然后生成一张table。但是无论如何都取不到值。
[html] view plain copy
原因总结:通过浏览了好多博客,找到了原因。
struts2采用的是映射机制,就是说你在action定义的变量通过set和get方法在页面中是可以得到数据的也就是说如果你想要在页面中取得action中的值的话就一定要把它定义出来,并且给他至少一个get方法,你可以吧MessageStore定义到你的action中去然后通过getMessageStore映射到页面上然后再通过struts2的标签提取其中的数据。
因此,我在UserAction.java中给lists 写了一个get和set方法
果然,立刻就拿到了值。