C:在jstl中输出标签

时间:2011-10-11 06:01:45

标签: jsp jstl

我是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}

任何人都可以帮助我。谢谢。

3 个答案:

答案 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