我希望在每个jsp页面(similar to this question)中删除taglib声明。
这就是为什么我使用所有html头文件和taglib声明制作headr.jsp。我希望将它包含在每个JSP页面中:
<%@ include file="/WEB-INF/include/header.jsp" %>
其内容将以:
开头<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
...
<title>${pageScope.pageTitle}</title>
问题是我在header.jsp中有页面标题,我想改变它。我需要在包含header.jsp之前在我的jsp页面中设置它,但我不能使用c:set
,因为JSTL尚未声明。我决定使用EL将pageTitle放在param或someScope映射中,如下所示:
${param.put("pageTitle", "Test")}
现在问题是我在这里得到了NPE。我几乎可以肯定这是由put()
返回 null 引起的,当我向地图添加新条目时,EL会尝试将null打印到输出。
PS:我知道我可以使用scriptlet,但由于这是一个不好的做法,我根本不考虑它们并在web.xml中禁用它们。