如何使用JSP创建布局模板?

时间:2018-04-12 01:18:56

标签: java jsp templates jsp-tags

我正在尝试创建一个布局模板,以便在各种JSP页面中重用,因此某些常见的HTML(脚本,样式,元标记等)不必在任何地方重复。

我对JSP不是很熟悉,但我可以告诉他们这样做的方法是使用标记文件。我几乎可以工作,但似乎JSP不接受标签正文中的JSP / Java代码?

WEB-INF/tags/layouts/base.tag中的模板标记:

<%@tag description="Base page layout" pageEncoding="UTF-8" %>
<%@attribute name="title" fragment="true" %>

<!DOCTYPE html>
<html>
  <head>
    <title><jsp:invoke fragment="title" /></title>
  </head>
  <body>
    <jsp:doBody />
  </body>
</html>

这是some-page.jsp

<%@taglib prefix="layout" tagdir="/WEB-INF/tags/layouts" %>

<% String txt = "Some text..."; %>

<layout:base>
  <jsp:attribute name="title">Hello!</jsp:attribute>
  <jsp:body>
    <h1><%= txt %></h1> 
  </jsp:body>
</layout:base>

<h1>标记呈现但变量中的内容不呈现。我也尝试使用<c:set var="txt" value="${txt}" />和许多其他变体,但似乎没有任何效果。

有没有办法让这项工作或其他我看不到的方法?我无法在网上找到解释如何实现这一目标的任何内容。

这似乎是一个非常简单和常见的事情,想要使用模板和我在JavaScript世界中使用的每种模板语言,这是支持但我很惊讶这不是在JSP中更容易。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了问题,请尝试将<jsp:doBody />替换为<%@include file="some-page.jsp" %>

some-page.jsp是要插入的JSP代码。