2011-08-19 7 views
5

我正在使用Apache瓦片進行模板化,部分模板是標題文本。本文取決於頁面所屬的部分。每個頁面都包含一個bean,並使用該bean的屬性構建標題文本。該bean將爲每個頁面使用不同的名稱。 所以,在我的JSP文件我想有這樣的事情:未處理Apache瓦片定義中的EL表達式

<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瓷磚,所以我可能沒有使用正確的術語。

+0

我在問一個愚蠢的問題,還是隻有沒有人能幫助我? –

+2

它看起來很好,你可以發佈你的瓷磚配置嗎?您是否嘗試過直接在JSP中評估$ {myBean.id}以檢查其實際存在?看看這裏:http://tiles.apache.org/2.1/framework/tutorial/advanced/el-support.html,你的classpath上有tile-el.jar嗎?要啓用EL支持,您需要設置org.apache.tiles.evaluator.AttributeEvaluator參數, –

回答

6

我只是想指出,巴里的回答(在他對原帖的評論中)幫助了我。你需要在你的類路徑上有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> 

瓷磚3. Spring的TilesConfigurer瓷磚3自動檢查JSP類路徑API 2.1和Tiles EL JAR。如果它們都找到了它們,它會自動創建一個EL感知屬性評估器。