使用OGNL表达式访问Tiles 2中的请求标头

时间:2012-10-25 14:26:39

标签: tiles ognl

我在我的应用程序中使用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。但它似乎没有用。

有什么想法吗?

1 个答案:

答案 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" />