我有更多.jsp文件,我有page.tag,其中包含有关所有.jsp文件的信息 - 所以我不想在每个.jsp中都有doctype,样式和脚本,但只在一个标签中,因为如果我想改变一些东西,我必须在所有.jsp中改变它。所以假设我有index.jsp,它显示了page.tag:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>
<t:page title="index">
<div id="content">
huge content of the index page..
</div>
</t:page>
和我的page.tag:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<%@attribute required="true" name="title" type="java.lang.String" %>
<html>
<head>
<title>${title}</title>
<styles and other info required for every .jsp>
</head>
<body>
<!-- HERE I WANT TO SHOW THE <DIV> FROM INDEX.JSP -->
</body>
</html>
我只将标题作为参数传递给标记。我可以以某种方式传递标签中当前jsp的内容吗?因此,我认为将jsp的内容作为参数(作为标题)传递是不可能的,因为内容可能很大。怎么做?
答案 0 :(得分:0)
你可以用jsp include:
来做<jsp:include page="header.jsp?title=the+title" />
但是在你的header.jsp中用EL来做这件事,你需要知道你将要读取请求参数而不是请求属性,所以它必须像:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<c:set var="title_param_name" value="title" />
<html>
<head>
<title>${param[title_param_name]}</title>
<styles and other info required for every .jsp>
</head>
<body>
你必须使用c:set,因为它不能直接使用$ {param [&#34; title&#34;]}之类的东西。
然后
<jsp:include page="footer.jsp" />
其余的在footer.jsp中。或者,对于这个,你可以使用<jsp:include page="footer.html" />
,如果你真的只有html:
</body>
</html>