33 votes

Héritage de modèle JSP

Venant d'un milieu de Django, j'utilise souvent "l'héritage de template", où plusieurs modèles héritent d'une base commune. Est-il un moyen facile de le faire dans JSP? Si non, est-il une alternative à la JSP qui fait cela (en plus de Django sur Jython qui est :)

modèle de base

<html>
  <body>
    {% block content %}
    {% endblock %}
  </body>
<html>

le contenu de base

{% extends "base template" %}
{% block content %}
<h1>{{ content.title }} <-- Fills in a variable</h1>
{{ content.body }} <-- Fills in another variable
{% endblock %}

Rendra comme suit (en supposant que le contenu.le titre est "Insérer le Titre Ici", et le contenu.le corps est "Insérer Corps Ici")

<html>
  <body>
    <h1>Insert title Here <-- Fills in a variable</h1>
    Insert Body Here <-- Fills in another variable
  </body>
<html>

21voto

Ben Lings Points 11395

Vous pouvez faire des choses similaires en utilisant des fichiers de balises JSP. Créez votre propre page.tag qui contient la structure de la page. Utilisez ensuite une balise <jsp:body/> pour insérer le contenu.

13voto

badqiu Points 101

vous pouvez utiliser rapide-cadre pour l'héritage de template JSP

de la base.jsp

%@ taglib uri="http://www.rapid-framework.org.cn/rapid" prefix="rapid" %>  
<html>  
<haed>
    <rapid:block name="head">
     base_head_content
    </rapid:block>
</head>  
<body>  
 <br />  
 <rapid:block name="content">
  base_body_content
 </rapid:block>  
 </body>  
</html>

enfant.jsp

<%@ taglib uri="http://www.rapid-framework.org.cn/rapid" prefix="rapid" %>  
<rapid:override name="content">  
     <div>
        <h2>Entry one</h2>
        <p>This is my first entry.</p>
    </div>
</rapid:override>  

<!-- extends from base.jsp or <jsp:include page="base.jsp"> -->  
<%@ include file="base.jsp" %> 

sortie

<html>
<haed>  
 base_head_content
</haed>  
<body>  
 <br />  
     <div>
        <h2>Entry one</h2>
        <p>This is my first entry.</p>
    </div>
</body>  
</html>

le code source

http://rapid-framework.googlecode.com/svn/trunk/rapid-framework/src/rapid_framework_common/cn/org/rapid_framework/web/tags/

10voto

geowa4 Points 17712

Vous voudrez probablement vous pencher sur les carreaux .

EDIT: Sur une note liée aux tuiles, vous voudrez peut-être examiner Struts . Ce n'est pas ce que vous cherchez (c'est des tuiles), mais c'est utile pour quelqu'un qui vient de Django.

4voto

yawmark Points 1526

D'autres options à explorer comprennent Sitemesh, qui est construit sur l'idée de la page décorateurs, et Java Server Faces (JSF), qui emploie web à base de composants d'INTERFACE utilisateur. Et tandis que nous parlons de développement rapide avec les frameworks web sur la plate-forme Java, je vous encourage à consulter le Graal. Il a la même mission a Django; à savoir, le rapide développement d'applications web basé sur la convention plutôt que configuration".

J'espère que c'est pas trop suggestion pour un poste. :o)

3voto

jaketrent Points 526

Ma technologie front-end Web Java préférée est Facelets. Il prend en charge les modèles les plus similaires à Django que j'ai vus. Ce n'est pas aussi propre que Django, mais vous obtenez les mêmes avantages d'héritage.

Au lieu de Django:

Super:

 {% block content %}{% endblock %}
 

Sous:

 {% block content %}inheriting template's content here{% endblock %}
 

La syntaxe de Facelet est la suivante:

Super:

 <ui:insert name="content"></ui:insert>
 

Sous:

 <ui:define name="content">inheriting template's content here</ui:define>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X