关于struts2中使用OGNL表达式取值,取不到值的原因及解决方法

版权声明:欢迎转载但需要附上原博客链接 https://blog.csdn.net/qq_37746725?assign_skin=skin-ink https://blog.csdn.net/qq_37746725/article/details/83060537

struts2中使用的OGNL表达式在拿action中的值的时候无论如何都取不到。

今天查看了一天的资料终于找到解决办法了

UserAction.java   这个类查出了一个“lists”,也就是我在jsp页面中要取的值。

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";
    }
}


list.jsp   

在这个页面上,我要取上面这个类中的lists,然后生成一张table。但是无论如何都取不到值。

<%@ 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>

struts2采用的是映射机制,就是说你在action定义的变量通过set和get方法在页面中是可以得到数据的也就是说如果你想要在页面中取得action中的值的话就一定要把它定义出来,并且给他至少一个get方法,你可以吧MessageStore定义到你的action中去然后通过getMessageStore映射到页面上然后再通过struts2的标签提取其中的数据。

因此,我在UserAction.java中给lists 写了一个get和set方法

果然,立刻就拿到了值。
--------------------- 

猜你喜欢

转载自blog.csdn.net/qq_37746725/article/details/83060537
今日推荐