Вывести одну запись из базы данных на странице JSP через сервлет Java на основе параметра GET, как? - PullRequest
0 голосов
/ 29 июля 2010

У меня есть сервлет, который корректно возвращает нужные мне данные из базы данных при вызове метода doGet (). Я хотел бы, чтобы doGet () заполнял Java-бин, на который мы затем ссылаемся на странице product.jsf.

Я хотел бы позвонить по URL-адресу, как http://example.com/product.jsf?id=XXX

И вернуть единственную запись на основе идентификатора в URL. Я не могу понять это.

Ответы [ 2 ]

0 голосов
/ 29 июля 2010

У этого сервлета слишком много обязанностей.Он тесно связан .Измените код доступа к данным в отдельный класс, чтобы вы могли повторно использовать его в и классе сервлета и компоненте JSF.

Итак, в основном :

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Long id = Long.valueOf(request.getParameter("id"));
    List<Product> products = productDAO.list(id);
    request.setAttribute("products", products);
    request.getRequestDispatcher("products.jsp").forward(request, response);
}

И:

@ManagedProperty(value="#{param.id}")
private Long id;
private List<Product> products; // +getter

@PostConstruct
public void init() {
    this.products = productDAO.list(id);
}

, чтобы они могли работать независимо.

0 голосов
/ 29 июля 2010

Не нужно ли объявлять поле компонента с тем же именем, что и поле на странице? Большинство механизмов MVC могут поддерживать синхронизацию двух, если они следуют надлежащему соглашению об именах.

...