1

我开始学习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;
    }
}

当执行方法返回成功时,它重定向到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>

但结果它显示这样的东西 在此处输入图像描述

并且不显示我的收藏..(带有页脚按钮的文本字段和文本区域)帮助我,请告诉我我做错了什么谢谢

4

2 回答 2

3

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

例子:

getNewses()
{
...
}

不是

 getNews(){ ...}
于 2012-08-31T15:44:32.343 回答
1

(不是答案。)

三个评论:

  1. 您的新闻项目 getter实例化 a NewsDao,您应该决定是在 getter 中还是在操作的execute方法中执行此操作。
  2. 您将代码绑定到特定的 DAO 实现。如果您只是在玩玩,那很好,但是为了使事情保持可测试性并与实现隔离,您最好允许注入 DAO 实现。
  3. execute方法的结构不便于理解:失败更快。
public String execute() {
    if (!userDao.validUser(login, password)) {
        return ERROR;
    }

    setNews(newDao.getAllNews());
    return SUCCESS;
}
于 2012-08-31T15:58:18.313 回答