2010-11-12 3 views
0

Я пытаюсь установить локальный в JSP.Как установить языковой стандарт для JSP с помощью <fmt: setLocale>?

Я думал, что я смогу сделать что-то вроде:

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

Java's own page on the topic, кажется, точно сказать так много.

Однако, когда я иду, чтобы выполнить это, я получаю:

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"/> 

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

+0

В каком объявлении jstl taglib вы используете? –

+0

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

ответ

5

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

  • Это может произойти, если ваш web.xml корень декларация не соответствует по крайней мере Servlet 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)

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

+1

Приветствия! Для записи проблема заключалась в объявлении taglib. –