2010-11-12 21 views
0

J'essaye de placer le local dans JSP.Comment puis-je définir les paramètres régionaux pour JSP en utilisant <fmt: setLocale>?

Je pensais que je serais capable de faire quelque chose comme:

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

Java's own page on the topic semblent dire exactement tellement.

Cependant, quand je vais exécuter cela, je reçois:

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 

J'ai aussi essayé

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

et je reçois la même erreur.

+0

Quelle déclaration jstl taglib utilisez-vous? –

+0

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

Répondre

5

Il existe plusieurs causes possibles. Ce n'est pas directement évident à partir de votre question. Je les mentionnerai tous ici de toute façon.

  • Cela peut se produire si votre déclaration web.xml racine ne se conforme pas au moins Servlet 2.4 (ce qui implique JSP 2.0 qui est quand EL est pris en charge taglibs d'exécution). Comme cela date déjà de plusieurs années et que vous utilisez un servletcontainer compatible Servlet 3.0, je le redéfinirais comme 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"> 
    
  • Cela peut également se produire si la déclaration fmt taglib ne se conforme pas au moins JSTL 1.1 (qui est conçu pour JSP 2.0). Assurez-vous que ressembler selon le TLDDOC:

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

    (l'absence de /jsp indiquerait JSTL 1,0)

  • Cela peut également se produire si vous avez réellement une version JSTL pas à jour dans votre Webapp/WEB-INF/lib ou Tomcat/lib, comme JSTL 1.0 ou même l'héritage de Jakarta. Pour Tomcat 6.x ou plus récent, il est préférable de choisir JSTL 1.2 here (et n'oubliez pas de supprimer l'ancien standard.jar!).

+1

À la votre! Pour l'anecdote, le problème était la déclaration taglib. –