16

spring-web-mvc を使用してアプリケーションを開発しています...

今私のコントローラでは、次のように返されます:

  public class InterfacesManageController implements Controller {
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception  {

    Map<String, Object> myModel = new HashMap<String, Object>();

    myModel.put("interfacesList", this.interfacesSecurityProcessor.findByAll(0, null, null, null));

    return new ModelAndView("common", "model", myModel);
}

今、私のJSPには次のコードが含まれています:

<c:forEach items="${model.interfacesList}" var="prod">
     <c:out value="${prod.id}"/> <c:out value="${prod.name}"/><br><br>
</c:forEach>

Tomcat 6.0.20、ognl 2.6.11 がある Windows プラットフォームでこれを実行すると、次のような正確な出力が得られます。

117 eth1

118 eth1

119 eth0

しかし、Tomcat 5.5 を使用している unix (cent os) プラットフォームに war ファイルをデプロイすると、ognl 式が実行されず、次のような出力が得られます。

${prod.id} ${prod.name}

ognl式のバージョンとTomcatのバージョンの問題は何ですか?

前もって感謝します...

4

3 に答える 3

36

しかし、Tomcat 5.5を使用しているUnix(CentOS)プラットフォームにwarファイルをデプロイすると、EL式が実行されず、次のような出力が表示されます。

${prod.id} ${prod.name}

つまり、EL式はまったく評価されず、プレーンテキストとして表示されますか?これには、次の1つ以上の原因が考えられます。

  1. 問題のアプリケーションサーバーはJSP2.0をサポートしていません。
  2. web.xmlサーブレット2.4以降として宣言されていません。
  3. <%@page %>JSPのはで構成されますisELIgnored=true
  4. はでweb.xml構成さ<el-ignored>true</el-ignored><jsp-config>ます。

Tomcat5.5はサーブレット2.4/JSP 2.0であるため、#1をスクラッチすることができます。デプロイする前にwebappで何も変更しなかったので、#3と#4に傷が付いている可能性があります。今#2を残しました。おそらく、Tomcat5.5はサーブレット2.4までしか理解できないのにTomcat6.0のサーブレット2.5として宣言したのかもしれません。このようにすると、Tomcatが互換性の最も低いモードにフォールバックするため、すべてが混乱します。Tomcat 5.5と6.0の両方で機能するように、サーブレット2.4web.xmlとして再宣言する必要があります。宣言は次のようになります。

<web-app
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

    <!-- Here you go. -->

</web-app>
于 2009-11-12T11:48:43.323 に答える
1

Tomcat または Web アプリケーションの lib フォルダに JSTL ライブラリが含まれていることを確認してください。

これらのリンクは次のことに役立ちます。

JSTL で動作するように Tomcat をセットアップする方法

Web アプリケーションで jstl を参照して使用する方法

于 2009-11-12T11:30:27.790 に答える
1

BalusC の優れた回答に感謝します。私は彼が上で診断したのとまったく同じ問題を抱えていました. ただし、アプリケーションのさまざまな JSP および JSTL 依存関係がすべて互換性があることも確認する必要がありました。特に、私は JSTL 1.2 を参照していましたが、その依存関係を JSTL 1.1.2 に変更するまで、この問題は解消されませんでした (この時点で、taglibs.standard:1.1.2 への明示的な依存関係も追加する必要がありました)。

次のブログ投稿は、異なるバージョン間の互換性に関するより多くの情報を提供します: http://www.mularien.com/blog/2008/04/24/how-to-reference-and-use-jstl-in-your-web -応用/

于 2013-09-03T16:44:51.270 に答える