我在我的应用程序中使用Tiles 2.2.2(Struts 2.2.3)。我想使用表达式来修改我的屏幕组成,具体取决于请求中的某些属性。基本上,我想更改屏幕的扩展,具体取决于请求中是否有名称为“x-requested-with”且值为“XMLHttpRequest”的标头。有可能吗?我试图用一个属性做一个简单的例子:
<put-attribute name="test" expression="OGNL:requestScope" cascade="true"/>
我尝试了不同的表达式,如OGNL:%{#request.headers.referer},OGNL:#request.headers.referer,OGNL:requestScope.headers.referer等。但它总是返回null。我还没有找到任何关于OGNL表达式如何在Tiles上工作的文档,所以我的工作基于我如何使用Struts。但它似乎没有用。
有什么想法吗?
答案 0 :(得分:1)
你是如何初始化Tiles的?如果您正在使用StrutsTilesListener,则不会评估tiles.xml中的OGNL表达式。
在我的Struts2应用程序中,我在web.xml中使用org.apache.tiles.extras.complete.CompleteAutoloadTilesListener并且OGNL评估正在运行:
<listener>
<listener-class>org.apache.tiles.extras.complete.CompleteAutoloadTilesListener</listener-class>
</listener>
就我而言,我有一个名为'content'的自定义TilesResult:
<put-attribute name="content" expression="OGNL:content" />