天天看點

通路JSP頁面報錯According to TLD or attribute directive in tag file, attribute value does not accept

通路JSP頁面jstl表達式使用錯誤,詳細錯誤如下:

org.apache.jasper.JasperException: /WEB-INF/views/show.jsp (line: , column: ) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:)
    org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:)
    org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:)
    org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:)
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:)
    org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:)
    org.apache.jasper.compiler.Node$Visitor.visit(Node.java:)
    org.apache.jasper.compiler.Node$Root.accept(Node.java:)
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:)
    org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:)
           

出現上述錯誤的原因是,在JSP頁面使用了fmt标簽庫

原因:

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
//使用了日期格式化方法
<fmt:formatDate pattern="yyyy-MM-dd" value="${user.birthday}" />
           

出現錯誤的原因是使用的是jstl1.2,在jstl1.0和jstp1.1、jstl1.2版本在使用标簽庫的時候存在一定的差别,在jstl1.0以後的版本uri都應該加上/jsp,引用方法如下:

解決方法一:(推薦)

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
//使用了日期格式化方法
<fmt:formatDate pattern="yyyy-MM-dd" value="${user.birthday}" />
           

解決方法二:

修改web.xml和jstl庫版本

//修改2.3以上版本為2.3及以下版本版本
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="myweb" version="3.0">