Посмотреть модели в сервлетах / MVC - PullRequest
0 голосов
/ 29 марта 2012

Я создаю приложение с простыми сервлетами и шаблоном MVC. Я не использую какие-либо рамки, как Spring.

У меня есть несколько классов моделей, таких как:

public class BlogPost {

private List<Comment> _comments;

// Things
}

и

public class Comment {
// Code
}

Сообщения могут иметь ноль или более комментариев, связанных с ними в этой коллекции.

Однако я хочу прикрепить некоторую дополнительную информацию к модели BlogPost, прежде чем она будет передана в представление, а именно значение, которое я установил в Cookie, когда пользователь комментирует BlogPost. Строго говоря, это не часть самой Модели 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() { /* ... */ }

}

Ответы [ 2 ]

1 голос
/ 30 марта 2012

Если BlogPost и ваши данные cookie не связаны, плохо помещать данные cookie в ваш класс BlogPost. Класс BlogPost должен представлять то, что он называется - сообщение в блоге. Было бы странно связывать другие данные.

Ваш второй вариант создания класса, специально предназначенного для передачи представлению, является лучшей идеей, хотя мне любопытно узнать, почему вам нужно передать сообщение в блоге и данные cookie как один объект в ваше представление? Если вы используете сырые сервлеты:

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

Использование класса модели (например, Spring MVC ModelMap):

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

Ваше представление будет иметь доступ к обоим фрагментам данных, которыми вы можете манипулировать, используя JSTL или другие библиотеки тегов.

Если я что-то упускаю, не могли бы вы рассказать подробнее?

0 голосов
/ 29 марта 2012

Создайте модель HashMap - и передайте ее вместе с ответом для просмотра. model.put ("блог", блог) model.put ("message", "some message")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...