1

我在我的应用程序(Struts 2.2.3)中使用 Tiles 2.2.2。我想使用表达式来根据请求中的某些属性修改我的屏幕组成。基本上,我想根据请求中是否有名为“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 进行工作。但这似乎不起作用。

有任何想法吗?

4

1 回答 1

1

你是如何初始化瓷砖的?如果您使用的是 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>

就我而言,我有一个自定义 TilesResult,其属性名为“内容”:

<put-attribute name="content" expression="OGNL:content" />
于 2012-11-02T13:16:21.207 回答