我正在使用简单的Servlet和MVC模式构建应用程序。我没有使用像Spring这样的框架。

我有一些这样的模型类:

public class BlogPost {

private List<Comment> _comments;

// Things
}




public class Comment {
// Code
}


在该集合中,帖子可以具有零个或多个与之关联的评论。

但是,我想在传递给View之前在BlogPost模型上附加一些附加信息,即用户在BlogPost上发表评论后在Cookie中设置的值。严格来说,这不是BlogPost模型本身的一部分-它是无关的,附带的信息,但是我不确定我是否应该对自己轻松一些,只是将其添加到BlogPost类中,或者进行一些抽象操作多一点。

因此,我应该在BlogPost类中添加一个字段来处理此附加值,还是应该沿着传递给JSP视图的方式创建“视图模型”:

public class BlogPostView {

public BlogPostView(BlogPost bp, String message) {
  // Constructor stuff, save these to instance variables
}

public BlogPost getBlogPost() { /* ... */ }
public String getMessage() { /* ... */ }

}

最佳答案

如果BlogPost和您的cookie数据无关,则将cookie数据放入BlogPost类是一个坏主意。 BlogPost类应表示它的名称-博客文章。将其他数据关联起来会令人困惑。

第二种选择是专门创建一个类以传递给视图,这是一个更好的主意,尽管我很好奇,为什么您需要将博客文章和cookie数据作为一个对象传递给视图?如果您使用的是原始servlet:

request.setAttribute("blogPost",blogPost);
request.setAttribute("cookieData",cookieData);


使用模型类(例如Spring MVC ModelMap):

model.addAttribute("blogPost",blogPost);
model.addAttribute("cookieData",cookieData);


您的视图将可以访问这两部分数据,您可以使用JSTL或其他标签库进行操作。

如果有我想念的东西,您能详细说明一下吗?

关于java - 在Servlets/MVC中查看模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9923790/

10-10 21:52