Включение страницы JSP в другую страницу JSP, как избежать нескольких разделов HEAD / BODY? - PullRequest
3 голосов
/ 03 декабря 2009

Я хотел бы включить страницу JSP в другую страницу JSP. Допустим, у меня есть master.jsp, включая slave.jsp.

Поскольку slave.jsp имеет свой собственный раздел <head> для работы с JavaScript и CSS, существует ли способ или, возможно, другой метод для объединения раздела master и slave HEAD s в один? То же самое должно быть сделано для секции BODY s.

Я недавно использовал sitemesh , но я думаю, что нецелесообразно настраивать шаблон для каждой страницы.

Ответы [ 4 ]

2 голосов
/ 03 декабря 2009

Я решил это, передав параметр при включении страницы.

в master.jsp

<head>
  blablabla
  <c:import url="slave.jsp">
    <c:param name="sectionName" value="HEAD" />
  </c:import>
</head>
<body>
  blablabla
  <c:import url="slave.jsp">
  </c:import>
</body>

, а затемв slave.jsp параметр считывается, и настраивается пользовательская часть страницы.

<c:choose>
  <c:when test="${param.sectionName == 'HEAD'}">
     head section here [without the <HEAD> tags !]
  </c:when>
  <c:otherwise>
     body section here [without the <BODY> tags !]
  </c:otherwise>
</c:choose>

не слишком приятно видеть, но работает.Таким образом, я могу удалить дубликаты HEAD и BODY деталей.

1 голос
/ 03 декабря 2009

Вы не можете и не должны объединять два <html> документа друг с другом. Это приведет к неверному выводу. Лучше включить CSS / JS условно с помощью JSTL c:if или c:choose тегов.

Базовый пример:

<head>
    <script type="text/javascript" src="global.js"></script>
    <c:if test="${isAdminPage}">
        <script type="text/javascript" src="admin.js"></script>
    </c:if>
</head>
0 голосов
/ 03 декабря 2009

Вы также можете расширить условную опцию и создать meta.jsp (например), который содержит Map для каждого из элементов заголовка - мета-тегов, css hrefs, script hrefs и использовать имя JSP в качестве ключа в этой карте. Затем вы звоните request.getRequestURI() и показываете все, что положили на карту под этим ключом. Не очень красивое решение, но работает.

0 голосов
/ 03 декабря 2009

За пределами сайта, вам почти не повезло. Однако я бы пересмотрел ваш дизайн, если вы считаете, что настройка на страницу нецелесообразна. Сколько страниц будет в вашем приложении?

...