Как я могу установить локаль для JSP, используя? - PullRequest
0 голосов
/ 13 ноября 2010

Я пытаюсь установить локальное в 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"/>

и я получаю ту же ошибку.

1 Ответ

5 голосов
/ 13 ноября 2010

Есть несколько возможных причин.Из вашего вопроса неясно, какой это.Я все равно упомяну их здесь.

  • Это может произойти, если ваше корневое объявление web.xml не соответствует, по крайней мере, сервлету 2.4 (что подразумевает JSP 2.0, то есть когда EL поддерживается вметки времени выполнения).Поскольку этому уже несколько лет, и вы используете Servlet 3.0-совместимый сервлет-контейнер, я бы объявил его как 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)

  • ThisЭто также может произойти, если у вас на самом деле есть устаревшая версия JSTL в Webapp/WEB-INF/lib или Tomcat/lib, например, JSTL 1.0 или даже устаревшая версия Jakarta.Для Tomcat 6.x или новее лучше выбрать JSTL 1.2 здесь (и не забудьте также удалить старую standard.jar!).

...