Ben*_*tin 5 java jsp apache-tiles
我使用Apache tile进行模板化,部分模板是标题文本.此文本取决于页面所属的部分.每个页面都包含一个bean,标题文本是使用该bean的属性构建的.bean的每个页面都有不同的名称.所以,在我的JSP文件中,我会有这样的事情:
<div>${myBean.id} - ${myBean.name}</div>
Run Code Online (Sandbox Code Playgroud)
我想在tile定义中得到那个表达式,我尝试了这个:
<definition template="/WEB-INF/tiles/layout/mytemplate.jsp">
<put-attribute name="title" expression="${myBean.id} - ${myBean.name}" />
</definition>
Run Code Online (Sandbox Code Playgroud)
在我做的模板中:
<div class="title-header"><tiles:insertAttribute name="title" /></div>
Run Code Online (Sandbox Code Playgroud)
但结果是未经处理的EL表达式:
<div>${myBean.id} - ${myBean.name}</div>
Run Code Online (Sandbox Code Playgroud)
这里的代码已经简化,以保持这篇文章的简洁,但这正是我想要做的.也有理由我尝试这样做.
知道EL表达式没有被处理的原因吗?
谢谢
注意:我对JSP和Apache Tiles相当新,所以我可能没有使用正确的术语.
我只是想指出巴里的答案(在他对原始帖子的评论中)帮助了我.您需要拥有tiles-el.jar类路径(如果您想使用标准EL;可能需要相应的MVEL或OGNL JAR).
Tiles 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>
Run Code Online (Sandbox Code Playgroud)
Tiles 3. Spring TilesConfigurerfor Tiles 3自动检查JSP API 2.1和Tiles EL JAR的类路径.如果它们都找到它们,它会自动创建一个EL感知属性评估器.