2010-12-03 5 views
9

J'essaie de comprendre comment réutiliser le plus efficacement le code JSP. J'aime la façon Rails/erb fonctionne de cette façon ... avec un rendement, la mise en page, content_forJSP, peut-il fonctionner de manière similaire à yield, layout, content_for dans Ruby/Rails/Erb

Exemple:

main_layout.erb.html

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

utilisation

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

<p>Hello, Rails!</p> 

dans le contrôleur

layout "main_layout" 

Quel est le plus proche de cela avec JSP (sans utiliser de frameworks supplémentaires)? Je sais à propos de JSP inclure, mais ce n'est pas vraiment le même que le rendement. Des suggestions?

Merci

+1

Les JSP n'ont rien sur ERB. Il ne vous fournit que quelques balises personnalisées et vous permet d'interagir avec votre objet modèle. Vous pouvez tirer parti de plus de puissance en retournant un objet JSON et en faisant du JavaScript, en ce qui me concerne. – Samo

+0

Une autre grande réponse de fichiers tag JSP est https://stackoverflow.com/a/3257426/37572 –

Répondre

17

Je ne suis pas au courant de ce yield et content_for fournissent, mais JSP tag files vous permettre d'une manière plus robuste aux pages de modèle que JSP comprend.

Exemple:

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> 

Un individu JSP

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

Placez simplement votre layout.tag dans le répertoire/WEB-INF/tags. Vous pouvez utiliser n'importe quel préfixe disponible, je viens d'utiliser "z" pour l'exemple.

+0

merci, je vais regarder dans ce domaine. – bob

+6

+50000 pour m'avoir montré un moyen de faire cela comme ERB sans avoir à utiliser des tuiles. – cbmeeks

+1

c'est exactement ce dont j'ai besoin, je ne voulais pas utiliser des tuiles – islon

0

Alors que vous avez mentionné ne pas vouloir de frameworks en plus de stock jsp, la fonctionnalité Layout du Stripes Framework fait à peu près exactement ce que vous demandez.

Questions connexes