JSP模板继承

Rya*_*yan 31 java django templates jsp

来自Django的背景,我经常使用"模板继承",其中多个模板从公共基础继承.在JSP中有一种简单的方法吗?如果没有,是否有一个替代JSP来做到这一点(除了Jython上的Django :)

基础模板

<html>
  <body>
    {% block content %}
    {% endblock %}
  </body>
<html>
Run Code Online (Sandbox Code Playgroud)

基本内容

{% extends "base template" %}
{% block content %}
<h1>{{ content.title }} <-- Fills in a variable</h1>
{{ content.body }} <-- Fills in another variable
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

将呈现如下(假设conten.title是"Insert Title Here",而content.body是"Insert Body Here")

<html>
  <body>
    <h1>Insert title Here <-- Fills in a variable</h1>
    Insert Body Here <-- Fills in another variable
  </body>
<html>
Run Code Online (Sandbox Code Playgroud)

Ben*_*ngs 19

您可以使用JSP标记文件执行类似的操作.创建自己的page.tag包含页面结构.然后使用<jsp:body/>标签插入内容.

  • 相关:[JSP技巧使模板更容易?](http://stackoverflow.com/questions/1296235/jsp-tricks-to-make-templating-easier)(标签文件简短教程) (12认同)

小智 12

您可以使用rapid-framework进行JSP模板继承

base.jsp

%@ taglib uri="http://www.rapid-framework.org.cn/rapid" prefix="rapid" %>  
<html>  
    <head>
        <rapid:block name="head">
            base_head_content
        </rapid:block>
    </head>  
    <body>  
        <br />  
        <rapid:block name="content">
            base_body_content
        </rapid:block>  
    </body>  
</html>
Run Code Online (Sandbox Code Playgroud)

child.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" %> 
Run Code Online (Sandbox Code Playgroud)

产量

<html>
<head>  
 base_head_content
</head>  
<body>  
    <br />  
    <div>
        <h2>Entry one</h2>
        <p>This is my first entry.</p>
    </div>
</body>  
</html>
Run Code Online (Sandbox Code Playgroud)

源代码

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


geo*_*wa4 10

你可能想看看Tiles.

编辑:在瓷砖的相关说明中,您可能想要查看Struts.这不是你想要的(那是瓷砖),但它对来自Django的人很有用.

  • 我从来没有尝试过瓷砖,只是略读文档,但我很好奇我的看法是否正确:似乎有很多设置(配置文件+需要编写java类)?Django模板的优点在于它们几乎只是工作,继承等,只需父模板文件和子模板文件就可以轻松完成,无需额外配置. (6认同)