我是jstl的新手。这是我的代码。
的hello.jsp
<%@ page contentType="text/html" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<body>
<form method="GET" action="jstl-choose-tag.jsp" >
Select an operation and click the button<br /><br />
<input type="radio" name="radioBtnGroup" value="uCaseOp" />Convert a string to upper Case<br />
<input type="radio" name="radioBtnGroup" value="lCaseOp" />Convert a string to lower Case<br />
<br />
<input type="Submit" />
</form>
</body>
</html>
JSTL-选择-tag.jsp:
<%@ page contentType="text/html" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<html>
<body>
<c:if test="${pageContext.request.method=='GET'}">
<c:out value="${param.radioBtnGroup}" />
<c:out value="${param.radioBtnGroup}" />
</c:if>
<a href="hello.jsp"> Back</a>
</body>
</html>
我得到的输出是
${param.radioBtnGroup} ${param.radioBtnGroup}
任何人都可以帮助我。谢谢。
答案 0 :(得分:2)
症状表明JSTL标记已成功解析并执行(否则您根本不会在浏览器中看到${foo}
),但EL表达式未被评估(您看到字面上{{ 1}}在浏览器中。)
当您的${foo}
未声明符合至少 Servlet 2.4 / JSP 2.0时,可能会发生这种情况。如果您的web.xml
被声明符合Servlet 2.3或更低版本,或者声明失败,那么JSP 2.0兼容标记库中的EL表达式将不会被评估。
要获得正确的web.xml
声明示例,请查看our JSTL wiki page的底部。假设您的目标是支持Servlet 2.5的容器(例如Tomcat 6.0,Glassfish 2.x等),那么您的web.xml
应该声明为符合Servlet 2.5:
web.xml
答案 1 :(得分:0)
必须通过
引用el标记库<%@ taglib prefix = "c" uri = "http://java.sun.com/jstl/core" %>
NOT BY
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
如果提问者将其切换,那么只要相应的jar在类路径中,它就很有可能会选择正确的库。奇怪的是,这对我有用,即使我在我的web.xml中声明servlet 2.3(不是2.4或更高版本),这似乎并不重要。我正在使用Tomcat作为我的servlet容器。
答案 2 :(得分:0)
实际上,您还没有包括运行任何jstl所需的jar文件。 如果您使用的是maven,则可以添加依赖项,否则必须添加jar文件。 click here for reference