0

我正在尝试在 JSP 中设置本地。

我以为我可以做类似的事情:

<fmt:setLocale value="${param['local']}" scope="session"/>

Java 自己的关于该主题的页面似乎说了这么多。

但是,当我执行此操作时,我得到:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /pages/ResourceBundlesJSTL.jsp(11,0) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
 org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
 org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
 org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
 org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1232)
 org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:868)
 org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1539)
 org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
 org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428)
 org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2434)
 org.apache.jasper.compiler.Node$Root.accept(Node.java:475)
 org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
 org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1787)
 org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:211)
 org.apache.jasper.compiler.Compiler.compile(Compiler.java:360)
 org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
 org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
 org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:594)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:316)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.2 logs.

Apache Tomcat/7.0.2

我也试过

<fmt:setLocale value="<%= param['local'] %>" scope="session"/>

我得到同样的错误。

4

1 回答 1

5

有几个可能的原因。从您的问题来看,它并不是直接显而易见的。无论如何,我都会在这里提到它们。

  • 如果您的web.xml根声明至少不符合 Servlet 2.4(这意味着 JSP 2.0,即运行时标记库支持 EL),就会发生这种情况。由于这已经有好几年了,而且您正在使用与 Servlet 3.0 兼容的 servletcontainer,所以我将它重新声明为 Servlet 3.0。

    <web-app 
        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_0.xsd"
        version="3.0"> 
    
  • fmt如果taglib 声明至少不符合 JSTL 1.1(专为 JSP 2.0 设计),也会发生这种情况。确保它看起来像TLDDOC

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

    (没有/jsp表示 JSTL 1.0)

  • 如果您的Webapp/WEB-INF/libor中确实有一个过时的 JSTL 版本Tomcat/lib,例如 JSTL 1.0 甚至是旧的 Jakarta 版本,也会发生这种情况。对于 Tomcat 6.x 或更新版本,最好在此处选择 JSTL 1.2 (并且不要忘记删除旧版本standard.jar!)。

于 2010-11-12T23:54:06.153 回答