JSP 模板继承

2022-09-01 08:46:05

来自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 是“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>

答案 1

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


答案 2

您可以使用快速框架进行 JSP 模板继承

基地.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>

孩子.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/