【问题标题】:Use of OGNL expression to access request headers in Tiles 2使用 OGNL 表达式访问 Tiles 2 中的请求标头
【发布时间】:2012-10-25 14:26:39
【问题描述】:

我在我的应用程序(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 进行工作。但这似乎不起作用。

有什么想法吗?

【问题讨论】:

    标签: tiles ognl


    【解决方案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>
    

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

    <put-attribute name="content" expression="OGNL:content" />
    

    【讨论】:

    • 嗯,我得试试。你提到你有一个自定义的 TilesResult。为什么不使用 Struts2-Tiles 插件提供的那个呢?
    • 我扩展了提供的 org.apache.struts2.views.tiles.TilesResult 并添加了一些自定义属性以通过 Action 的 @Result 注释参数进行设置。
    猜你喜欢
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2016-08-08
    • 2016-02-13
    • 2012-06-05
    • 2022-06-16
    • 2019-12-26
    相关资源
    最近更新 更多