我有一个看起来像这样的jsp文件:
<html>
<body>
<div>location: ${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/</div>
<div>(should have "verdagon.net" somewhere in there)</div>
<div>Included stuff should appear below here:</div>
<jsp:include page="toinclude.html"/>
</body>
</html>
当我的WEB-INF目录中没有web.xml时,它输出正确:
location: http://verdagon.net:80/strnowebxml/
(should have "verdagon.net" somewhere in there)
Included stuff should appear below here:
I'm included!
然而,当我添加一个WEB-INF目录时,我放了一个简单的web.xml,只有这个,
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
</web-app>
有了这个web.xml,我得到了这个输出:
location: ${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/
(should have "verdagon.net" somewhere in there)
Included stuff should appear below here:
I'm included!
问题:那些美元符号替代品没有发生。
奇怪的事情:我知道JSP正在运行,因为jsp:include正在运行。
任何人都知道为什么当没有web.xml时JSP工作,然后在我添加它时中断?
答案 0 :(得分:0)
啊哈!事实证明版本不匹配。 tomcat / conf / web.xml中的全局web.xml的顶行为:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
但我的顶线是
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
答案:版本不同!最高的是2.4,最低的是3.0。一旦我将我的3.0改为2.4,替换发生得恰到好处。
(对于遇到类似问题的其他人,这些答案可能会对您有所帮助:)。
EL is not interpreted and appears plain vanilla in generated HTML output