質問

この質問に答えはこちら

していまJSPページ走行Tomcat5.5.私は、以下のコード:

 <c:forEach var="i" begin="1" end="10" step="1">
  <c:out value="${i}" />
  <br />
</c:forEach>

の出力を取得しています:

${i} 
${i} 
${i} 
${i} 
${i} 
${i} 
${i} 
${i} 
${i} 
${i} 

皆さんにforEachループではですが、出力があり、びっくりしました。の手でひたす。

役に立ちましたか?

解決

どこEL処理は発生しません。

私はデフォルトでオンことになっているけど、私は今、もう一度ページにまたがって実行します(または動作を変更しても同じページ)。どのようなページの先頭に次を追加すると、問題を解決する必要があります:

<%@ page isELIgnored="false" %> 

それは悪くはないので、私はすべてのページに追加して、私はまだ時折EL式の解釈を停止するページが発生する根本的な原因を知りません。

他のヒント

私はこの同じ問題を抱えていたし、間違っていたかを把握しようとして永遠に費やしました。

私は最初からWebアプリケーションの多くを開発しました。なぜ突然この一つが協力していませんでしたか?

1つの違いは、私はプロジェクト構造を生成するために、MavenのWebアプリケーションの原型を使用し、この時間でした。それはこのように見えたweb.xmlファイルを作成します:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
</web-app>

私は自分の問題として、私は答えを持っていたと確信していたことに気づいたら。だから私は、私の2.5のweb.xmlヘッダーの1つをコピーし、再構築、および再展開します。いいえ葉巻ありません。それは問題ではなかったと信じていませんでした。プロジェクトをクリーン、Tomcatを再起動します。いいえ。

RHSeegerの答えは、<%@のページisELIgnored = "false" に%>に入れてみてくださいために私を導きました。それは、問題を解決しました。しかし、私はまだエルはそもそも無視はじめに理由を知りたいと思っています。

私はエルがあるため、私のweb.xmlに何か問題を無視されていたので、私は密接に私がうまく働いていた知っていた別のWebアプリケーションのweb.xmlと比較して、それを検査考え出し。目立った違いはありません。

は、それから私は、エルが細かい評価された!エルは再度評価が、私の驚きにあまりされないと仮定すると、私のJSPから、および再配備<%@ページisELIgnored =「偽」%>を削除

すると、それはキャッシュの問題のいくつかの並べ替えである必要があります考え出す、私は問題を再現するためにweb.xmlに私の変更を元に戻しました。でも悪いのweb.xmlで、私は再デプロイ、それでもelは正しく評価されていました。それから私は私のプロジェクト全体(私は爆発し、展開を使用しています)、展開されたディレクトリを吹き飛ばすし、それを再作成を掃除しました。私は、Tomcatを再起動します。それでも、エルが悪いのweb.xmlにもかかわらず正しく評価取得しているように見えます。

最後に、それは私に夜が明けました。私は単純に、JSPにいくつかの場所にスペースを追加し、それを再パッケージ化し、ページをリフレッシュし。ビンゴ!今elが評価されていませんでした。

問題だから、のweb.xmlファイルにのでした。さらに、彼らは変わっていない限り、JSPが再コンパイルなっていなかったという事実によって複雑になります。 TomcatはJSPは再コンパイルまたは何する必要があるかどうかを判断するためにMD5サムを使用している場合はわかりません。別の可能性は、私はキャッシュ機構を持って知っているタイルを、使用していますが、私はそれはTomcatの再起動を生き残るために期待していないということです。

あなたはweb.xmlのを修正した後、あなたのJSPを変更しない限り、

とにかく、全ての賭けは、ELは再び作業を開始しますかどうかがオフになっています。これは他の誰か頭痛を節約できます願っています。それはTomcatのJSPの出力をキャッシュするJSPやタイルを再コンパイルされなかったかどうか、誰もが私に言うことができるならば、私も興味があります。 JSPは、右、$ {} EL式をどのように処理するかを把握する必要がありますとき、コンパイル時にあるので、私は、それは再コンパイルですかなり確信していますか?タイルは、実際にはそうでない場合はあらゆる種類の問題が生じるであろう、EL式に代入する内容をキャッシュすることはできません。

これは問題になるweb.xmlのヘッダです。

Mavenの生成されたヘッダの下にevalされたされるのELを停止させる。

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>

ヘッダーのevalのELの下に使用します。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
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_2_5.xsd">

web.xmlに関連する名前空間を含めるようにしてください。ただ、交換してみてください。

<web-app>

タグのようなもので
<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"
  metadata-complete="true">

これは私のためにそれを修正しました。あなたは、インストールのTomcatに付属している例のアプリであなたのTomcatインスタンスの正しい名前空間を見つけることができます。

興味のある人のために、JSP 2.0の等価なXML構文は、

<jsp:directive.page isELIgnored="false"/>

私はWebアプリケーションが、JSPで式を評価していない喜びを始めるためにMavenを使用し、ケビンに同様の問題があった - すべては良いですが、今isELIgnoredビットで遊んなし - - Mavenのは、どのリンクのweb.xmlを生成し、私はDOCTYPEヘッダを削除する必要がありました2.3へのピーターが述べたようにELが

デフォルトでは無効になっています

Javascriptの文字列で私の答えを参照してください。交換してください(/ \ $ /、STR)が可能な理由でJSPファイルの中で不気味に動作します。

長い答え:$ {i}は、いわゆる「表現言語」で表現されます。時には、式言語を無効にすることができます。それを有効にする方法の潜在的な理由、および方法のための答えの上を参照してください。

tomcat6使用してください。これは、web.xmlのELのための任意の設定を必要としません。

コントローラから:

@RequestMapping(value = "createcustomer",method = RequestMethod.GET)
    public String customer(Model model)
    {
        Customer cus=new Customer();
        cus.setCustomerNumber("Test");
        model.addAttribute("customer",cus);
        return "createcustomer";
    }

ビューでます:

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> 

<div class="cl">    
   <form:form commandName="customer" method="POST">

      <p>Name: <c:out value="${customer.CustomerNumber}"></c:out></p>

   </form:form>
<div>

出力:

Name: Test
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top