JSTL1.2根据标记文件中的TLD或属性指令,属性var不接受任何表达式

set*_*thu 5 java jstl jsp-tags maven tomcat8

我一直在谷歌搜索一个答案,它不起作用.

我收到此错误:

org.apache.jasper.JasperException:/WEB-INF/pages/calendarEntry.jsp(第5行,第46列)根据标记文件中的TLD或属性指令,属性var不接受任何表达式

这是我的jsp文件

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
    <c:set var="eventDate" value="${calendarEntry.date}"/>
    <h1 class="page-header">Calendar Event on <fmt:formatDate value="date" var="${eventDate}" /></h1>
Run Code Online (Sandbox Code Playgroud)

错误发生在最后一行.FMT

Web App声明

<web-app version="3.1"
     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_1.xsd">
Run Code Online (Sandbox Code Playgroud)

Maven Depedencies

<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.0</version>
    <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

部署环境 - Tomcat 8

Kim*_*son 15

我有一个类似的问题,这个答案指向基本上尝试两个不同的taglib声明.也许试试这两个?

使用fmt格式化日期:formatDate JSP

切换到你在jsp文件中声明的taglib解决了我的问题,具有讽刺意味.

  <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
Run Code Online (Sandbox Code Playgroud)

VS

  <%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
Run Code Online (Sandbox Code Playgroud)


set*_*thu 3

感谢大家的帮助。我意识到这是我的一个愚蠢的错误。

代替

<fmt:formatDate value="date" var="${eventDate}" />
Run Code Online (Sandbox Code Playgroud)

它应该是

<fmt:formatDate type="date" value="${calendarEntry.date}"
Run Code Online (Sandbox Code Playgroud)