2011-08-19 40 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感知属性评估器。