struts2不在jsp页面上显示集合

时间:2012-08-31 15:37:40

标签: java jsp struts2 tags

我开始学习struts2,并且不知道很多教友帮助我。 我有这样的动作类

public class LoginAction extends ActionSupport {

    private String login;
    private String password;
    private Collection<News> newses = new ArrayList<News>();

    public String execute() {
        UserDao userDao = new UserDao();
        if(userDao.checkUser(getLogin(),getPassword())){
            NewsDao newDao = new NewsDao();
            setNewses(newDao.getAllNews());
            return SUCCESS;
        }
        return ERROR;

    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Collection<News> getNewses() {
        NewsDao newDao = new NewsDao();
        setNewses(newDao.getAllNews());
        return newses;
    }

    public void setNewses(Collection<News> newses) {
        this.newses = newses;
    }
}

当execute方法返回Success时,它重定向到news.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
    <title><s:text name="news.page.title"/></title>
</head>
<body>
      <s:text name="news.page.main.label"/>
      <s:iterator status="stat" value="newses">
          <s:property value="title"/>
          <s:property value="body"/>
          <s:property value="user.name"/>
      </s:iterator>

      <s:include value="../jspf/footer.jsp" />
</body>
</html>

但结果它显示了这样的东西 enter image description here

并且不显示我的收藏..(带有按钮页面的文本字段和textarea) 帮帮我,告诉我弄错了什么 感谢

2 个答案:

答案 0 :(得分:3)

您的getter / setter应与属性名称同步。

示例:

getNewses()
{
...
}

 getNews(){ ...}

答案 1 :(得分:1)

(不是答案。)

三条评论:

  1. 您的新闻项目getter 实例化NewsDao,您应该决定是否要在getter或action execute方法中执行此操作。
  2. 您正在将代码绑定到特定的DAO实现。如果你只是在玩游戏,这很好,但是为了保持可测试性并与实现隔离,你可能最好允许注入DAO实现。
  3. execute方法的结构不是为了减轻理解:更快地失败。
  4. public String execute() {
        if (!userDao.validUser(login, password)) {
            return ERROR;
        }
    
        setNews(newDao.getAllNews());
        return SUCCESS;
    }