我有一个简单的maven web项目。我根本想不出让JSTL标签工作的方法。 出于测试目的,我创建了一个没有依赖项的虚拟项目,除了:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
在我的JSP页面中,我有以下测试代码 -
<c:set var="hello" value="see this?"/>
<c:out value="${hello}"></c:out>
<h2>${hello}</h2>
<br/>
<%=request.getAttribute("hello") %>
我还在顶部包含了jstl声明 -
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
但是,这似乎不起作用。令人惊讶的是,${hello}
没有显示任何有意义的内容,但request.getAttribute...
却有效。这意味着c:set
实际上正在工作,c:out
和简单表达式都不起作用。我错过了什么吗?
任何帮助都表示赞赏 - 现在试图让我的头脑在这3天了!
答案 0 :(得分:1)
JSTL jar只包含规范的标准类和接口,但没有标记的实现。
将此依赖项添加到您的pom:
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
BTW,请始终查看生成的HTML代码,了解正在发生的事情。 c:set
标记设置页面范围属性,而不是请求范围属性,因此request.getAttribute("hello")
输出内容的事实没有任何内容与之前放置的c:set
标记有关。
答案 1 :(得分:0)
解决方案是检查StackOverflow中提供的info document on JSTL。它提到了几乎所有关于JSTL安装可能无法正常工作的原因。