JSP, может ли он работать аналогично yield, layout, content_for в Ruby / Rails / Erb - PullRequest
10 голосов
/ 03 декабря 2010

Я пытаюсь выяснить, как наиболее эффективно повторно использовать код JSP. Мне нравится, как Rails / erb работает таким образом ... с yield, layout, content_for

Пример:

main_layout.erb.html

<html>
  <head><%= yield :head %></head>
  <body><%= yield %></body>
</html>

использование

<% content_for :head do %>
<title>A simple page</title>
<% end %>

<p>Hello, Rails!</p>

в контроллере

layout "main_layout"

Что ближе всего я могу получить к этому с JSP (без использования дополнительных фреймворков)? Я знаю о JSP include, но это не то же самое, что и yield. Есть предложения?

Спасибо

Ответы [ 2 ]

17 голосов
/ 04 декабря 2010

Я не знаком с тем, что предоставляют yield и content_for, но Файлы тегов JSP позволяют вам более надежный способ создания шаблонов страниц, чем JSP.

Пример:

layout.tag

<%@ tag body-content="scriptless" %>
<%@ attribute name="pageTitle" required="true" type="java.lang.String" %>

<html>
<head>
    <title>${pageTitle}</title>
</head>
<body>
    <jsp:doBody/>
</body>
</html>

Индивидуальная JSP

<%@ taglib prefix="z" tagdir="/WEB-INF/tags" %>
<z:layout pageTitle="A simple page">
    <p>Hello, JSP!</p>
</z:layout>

Просто поместите файл layout.tag в каталог / WEB-INF / tags. Вы можете использовать любой доступный префикс, который вы хотите, я просто использовал «z» для примера.

0 голосов
/ 07 декабря 2010

Несмотря на то, что вы упомянули, что не требуется никаких фреймворков поверх стандартной jsp, функциональность Layout Stripes Framework в значительной степени соответствует вашим запросам.

...