1

我正在尝试在 jstl 标签中使用表达式语言,但出现了奇怪的错误。

“根据标记文件中的 TLD 或属性指令,属性值不接受任何表达式”

代码是这样的:

<c:out value="${header['host']}"/>

但接下来的代码执行得很好:

${header["host"]}
<c:out value="hello"/>

我将 jstl.jar 和 standard.jar 添加到 WEB-INF/lib/ (以及类路径)。包含 jstl 的指令是标准的:

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

JSTL 版本为 1.1.2

应用服务器:tomcat 6.0.16

4

2 回答 2

5

您必须在 taglib 声明中使用此 URL。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

确保您的 web.xml 已声明 servlet 规范 2.4+

这篇文章有解释:How to Reference and Use JSTL in your Web Application

于 2009-05-22T17:23:22.813 回答
1

检查 web.xml 中的网络应用版本

<web-app version="2.5" 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_2_5.xsd">

并检查jstl-version.jar的META-INF中的jstl uri,选择c.tld,fmt.tld等。lib版本必须是:

<tlib-version>1.1</tlib-version>
于 2012-03-02T07:27:49.443 回答