我有代表组件的JPS。我想让这些组件JSP在执行JSP的内容之前和之后编写一些HTML。
component.jsp
<@page session="false">
<%= "hello " + "world" %>
当渲染这个JSP / servlet时,我希望它呈现:
<div class="component">
hello world
</div>
我希望能够创建各种“包装器”,并且根据JSP,包含使用正确内容包装JSP的内容。如果我想在路上更改/扩充包装器,我想只在一个地方进行(可能是100个组件)。
我可以使用&lt; @page extends =“...”&gt;执行某些操作吗?可能?
由于
答案 0 :(得分:1)
您想要的是:标记文件。在JSP 2.0上引入
使用这种方法,您可以使用jsp编写JSP标记,因此您需要创建一个名为WEB-INF/tags
的文件夹,并在此文件夹中创建一个“普通”jsp。
您要创建的标记需要具有以下开始指令:
<%@tag description="tag description" %>
以表明这是一个标记。
要使用它,您需要使用以下说明引用要使用的标记:<%@ taglib tagdir="/WEB-INF/tags" prefix="custom"%>
所以,你可以这样做: WEB-INF /标签/ myTag.tag
<%@tag description="hello tag" %>
<%@attribute name="name" required="false" type="java.lang.String"%>
<html><head></head><body>
<h1>Hello <%=name%></h1>
<jsp:doBody />
</body>
的index.jsp
<%@ taglib tagdir="/WEB-INF/tags" prefix="custom"%>
<custom:myTag name="My Name">this is the content</custom:myTag>
结果将是页面打印
<html><head></head><body>
<h1>Hello My Name</h1>
this is the content
</body>
答案 1 :(得分:0)
这是一个可怕的想法。使用scriptlet的JSP是1998技术。 没有人再写这些了。
如果你必须编写JSP,最好使用JSTL和SiteMesh或Tiles之类的东西来复合页面。
更好的想法是开始转向可能让您轻松运行移动解决方案和Web应用程序的东西。服务和模板将是我对JSP的偏好。