所有jsp页面的默认标签(包含doctype,样式等...)

时间:2014-07-17 19:36:30

标签: html jsp

我有更多.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的内容作为参数(作为标题)传递是不可能的,因为内容可能很大。怎么做?

1 个答案:

答案 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>