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 に準拠していない場合に発生する可能性があります (これは、EL がランタイム taglibs でサポートされている JSP 2.0 を意味します)。それはすでに数年前のものであり、あなたは 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 を示します)

  • これは、JSTL 1.0 やレガシー Jakarta のように、Webapp/WEB-INF/libまたはに古い JSTL バージョンが実際にある場合にも発生する可能性があります。Tomcat/libTomcat 6.x 以降の場合は、ここでJSTL 1.2 を選択することをお勧めします(古いものも削除することを忘れないでくださいstandard.jar!)。

于 2010-11-12T23:54:06.153 に答える