5

テンプレートに Apache タイルを使用しており、テンプレートの一部はヘッダー テキストです。このテキストは、ページが属するセクションによって異なります。各ページには Bean が含まれており、ヘッダー テキストはその Bean のプロパティを使用して作成されます。Bean には、ページごとに異なる名前が付けられます。したがって、私の JSP ファイルには次のようなものがあります。

<div>${myBean.id} - ${myBean.name}</div>

タイル定義でその式を取得したいので、これを試しました:

<definition template="/WEB-INF/tiles/layout/mytemplate.jsp">
  <put-attribute name="title" expression="${myBean.id} - ${myBean.name}" />
</definition>

そして、テンプレートで私は:

<div class="title-header"><tiles:insertAttribute name="title" /></div>

しかし、結果は未処理の EL 式です。

<div>${myBean.id} - ${myBean.name}</div>

この投稿を簡潔にするためにコードは簡略化されていますが、これはまさに私がやろうとしていることです。私がこのようにしようとしていることにも理由があります。

EL式が処理されていない理由は何ですか?

ありがとう

注: 私は JSP と Apache Tiles にかなり慣れていないので、正しい用語を使用していない可能性があります。

4

1 に答える 1

6

Barry の回答 (元の投稿に対する彼のコメント) が役に立ったことを指摘したかっただけです。クラスパスにある必要がありtiles-el.jarます (標準の EL を使用する場合、おそらく MVEL または OGNL に対応する JAR が必要です)。

タイル 2.に関してAttributeEvaluator、Spring を使用している場合の設定方法は次のとおりです。

<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/tiles/**/views.xml</value>
        </list>
    </property>

    <!-- Initialize expression language support for use in Tiles definitions. -->
    <property name="tilesProperties">
        <props>
            <prop key="org.apache.tiles.evaluator.AttributeEvaluator">org.apache.tiles.evaluator.el.ELAttributeEvaluator</prop>
        </props>
    </property>        
</bean>

Tiles 3。SpringTilesConfigurerTiles 3 は、JSP API 2.1 および Tiles EL JAR のクラスパスを自動的にチェックします。両方が見つかった場合は、EL 対応の属性エバリュエーターが自動的に作成されます。

于 2011-12-04T09:19:46.990 に答える