Spring и динамическое включение файлов JSP - PullRequest
6 голосов
/ 24 января 2011

Я начинаю создавать веб-приложения в Spring 3 (и в J2EE) в целом.Глядя на пример работы с petclinic, я увидел, что программист создает множество JSP-компонентов, таких как header, include, footer и затем соединяет их вместе, используя статическое включение.В любом случае, мне бы хотелось, чтобы у меня была базовая страница, например Base.jsp, и я мог включать в себя такие вещи:

<body>
 <jsp:include page="${subpage}"></jsp:include>
</body>

, потому что мне нужна главная страницавозможность указать в ModelAndView, возвращаемом контроллером, какие части страниц отображаются в каждой ситуации (с данными, прикрепленными к нему).Это работает, но не выдает ошибок, если ${subpage} не найдено, имя jsp неверно или отсутствует.Я хотел бы больше проверять ошибки ...

Это лучший и рекомендуемый способ сделать это?И если это кажется хорошей идеей для того, что я имею в виду, как правильно это сделать?

Ответы [ 4 ]

2 голосов
/ 24 января 2011

Возможно, вы захотите использовать интеграцию Apache Tiles 2 для управления файлами JSP. Spring имеет хорошую интеграционную поддержку Apache Tiles. Он также показывает, есть ли ошибка на вашей странице. Я поместил пример этого в http://krams915.blogspot.com/2010/12/spring-mvc-3-tiles-2-integration.html

1 голос
/ 24 января 2011

Похоже, у вас есть дополнительные цитаты в вашем subpage.Избавься от них.Например:

<c:set var="subpage" value="/jsp/index.jsp" />

Если вам нужно установить его в контроллере или сервлете - просто используйте request.setAttribute("subpage", "/jsp/index.jsp")

0 голосов
/ 24 января 2011

Взгляните на Sitemesh (http://www.opensymphony.com/sitemesh). Это система макетов страниц на основе фильтров сервлетов, которая проста в использовании. Я выполнил ряд проектов, используя ее с Spring MVC, и она работала очень хорошо.

0 голосов
/ 24 января 2011

Для проверки ошибок вы можете использовать:

<c:catch var="myException">
   <c:import url="${subpage}" />
</c:catch>

и позже вы можете проверить это с помощью:

<c:if test="${myException != null}">
...
</c:if>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...