我正在尝试创建一个布局模板,以便在各种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中更容易。
答案 0 :(得分:0)
如果我正确理解了问题,请尝试将<jsp:doBody />
替换为<%@include file="some-page.jsp" %>
some-page.jsp
是要插入的JSP代码。