我有一段时间的想法将我的所有taglib声明(uri等)放在一个公共头文件中,所以我不必手动将它们写入我的所有JSP中.最初,事情看起来很好,虽然我不像简单的EL语法那样使用实际的taglib.但是,我在所有jsp文件中都遇到了问题,除了明确声明了taglibs的文件.所有其他jsp(包括头文件)都将<c:something.../>标记视为HTML并且不对其进行评估.我做了一些谷歌搜索,发现奥莱利的这篇文章暗示我正在做的事情可以做,但我显然做错了什么.更重要的是,头文件中的其他内容(常见页眉,页面标题等)都显示正常.
头文件:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page session="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
包含声明:
<jsp:include page="/WEB-INF/jsp/include/header.jsp">
    <jsp:param name="title" value="Home" />
</jsp:include>
ska*_*man 21
这是预期的行为.
使用时<jsp:include>,它在单独的请求中执行目标,然后在包含JSP中包含输出.它不包括所包含目标的来源,它包括输出.生成目标输出的方法将丢失.
要做你想做的事,你需要使用<% include %>指令:
<%@ include file="/WEB-INF/jsp/include/header.jsp" %>
这会将文字文本倾斜header.jsp到您的页面中.当然,通过这样做,您不能再将参数传递给它,因此您需要将其设置为页面上下文属性(例如使用<c:set>...但当然<c:set>在您完成包含之前不能使用... ...).
从本质上讲,这并不值得麻烦.Taglib声明是烦人的样板,但很难摆脱.