我正在努力使应用程序(为tomcat 5.5开发)与tomcat 7(7.0.27)兼容。我遇到jstl的问题,当我指定时,只输出标签:
<web-app 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"
version="3.0">
在我的WEB-INF / web.xml文件中(之前使用的是2.4版本)。
示例.jsp文件:
%@page
language="java"
pageEncoding="utf-8"
contentType="text/html;charset=utf-8"
buffer="none"
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="uri:path-to-layout/layout" prefix="layout" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<fmt:bundle basename="com.path.to.resources.Labels">
...
<td><input
name="j_username"
id="j_username"
maxlength="30"
accesskey="2"
type="text"
style="width: 150px;"
value="<c:out value="${pageContext.request.remoteUser}" default="" />" /></td>
而不是预期的输出,我收到:
${pageContext.request.remoteUser}
作为文本字段中的值。
我使用JSTL 1.2.1,Tomcat 7.0.27,JSP 2.2。代码编译,当我将web.xml中的web-app版本从3.0更改为2.4时,它可以直接输出这些值(虽然还有其他问题迫使我使用3.0版本)。任何想法可能是这个问题的原因?
答案 0 :(得分:4)
您提到您使用的是JSTL 1.2.1,我假设它是从Glassfish服务器中被劫持的以下内容:
javax.servlet.jsp.jstl-1.2.1.jar
javax.servlet.jsp.jstl-api-1.2.1.jar
但是,根据评论,您似乎仍然在/WEB-INF/lib
的117个文件中包含旧的JSTL 1.0 / 1.1库:
jstl.jar
standard.jar
那只会有冲突。 删除。
答案 1 :(得分:0)
您需要为c:out
使用单引号,否则您将结束value
标记的input
属性。这样做:
<td><input name="j_username" id="j_username" maxlength="30" accesskey="2"
type="text" style="width: 150px;"
value="<c:out value='${pageContext.request.remoteUser}' default='' />" /></td>