【问题标题】:Struts 2 Dynamic message with OGNL带有 OGNL 的 Struts 2 动态消息
【发布时间】:2015-12-01 09:32:49
【问题描述】:

在 Struts 2 项目中,请考虑消息资源中的以下键:

export.filename.accountsummary=customer ${export}

该动作有export 用setter 和getter 归档。 如果您调用getText("export.filename.accountsummary"),struts 将自动调用getExport() 并用正确的值填充它。 (我认为struts也使用OGNL来查找${}认可的资源消息)这是正确的吗?!

我尝试使用 customer ${#sessionScope.CurrentUser.userName} 一个预期的 struts 使用这个 OGNL 表达式,但它没有工作。

【问题讨论】:

    标签: jsp struts2 el resourcebundle ognl


    【解决方案1】:

    看起来变量sessionScope 在上下文中不可用(如果您没有手动放置)。不要将它与 JSP 会话范围变量混淆(语法与 JSP for EL 中使用的语法相似,但 Struts2 不使用 JSP EL 引擎),OGNL 表达式中的所有内容都针对 OGNL 上下文进行评估。您可以在消息中使用${} 语法,Struts 将其值解析为OGNL 表达式,并且此语法定义了表达式的范围,在删除${} 后对其进行评估。

    【讨论】:

    • 我在拦截器中使用 getText。那么您认为最好的方法是什么。
    • 您可以在拦截器中使用它,因为您可以在那里获取操作实例并且它实现了TextProvider。恕我直言,如果您了解它的工作原理,您可以在操作和拦截器中免费使用getText,但在消息资源中您也可以使用MessageFormat 变量。最好的方式取决于你自己,我个人更喜欢第二种方式。
    【解决方案2】:

    我发现 vale 堆栈中已经有了#session 的会话,所以

    ${#session.['CurrentUser'].farsiFirstName}
    ${#session.CurrentUser.farsiFirstName}
    

    工作正常。

    【讨论】:

    • 您为什么将未回答您问题的答案标记为已接受?在这种情况下,点赞就足够了。
    猜你喜欢
    • 2013-09-29
    • 2011-06-29
    • 2013-12-04
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 2015-03-17
    • 2014-09-22
    相关资源
    最近更新 更多