JSP模板继承

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

基本模板

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

基本内容

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

将呈现如下(假设conten.title是“在此插入标题”,并且content.body是“在此插入正文”)

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

你可能会想看看瓷砖。

编辑:在相关的瓷砖说明,你可能想看看Struts。 这不是你正在寻找的东西(这是瓷砖),但它对来自Django的人有用。


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


您可以使用快速框架进行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>

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" %> 

产量

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

源代码

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

链接地址: http://www.djcxy.com/p/90127.html

上一篇: JSP template inheritance

下一篇: Why it isn't advised to call the release() method of a binary semaphore from inside a finally