2015-09-05 46 views
2

2动态消息,在一个Struts 2的项目,可以考虑以下关键的信息资源:的Struts与OGNL

export.filename.accountsummary=customer ${export} 

的行动export提交给美国setter和getter。 如果您致电getText("export.filename.accountsummary") struts将自动调用getExport()并填写正确的值。 (我认为struts使用OGNL也查找${}支持的资源消息)这是正确的吗?!

我尝试使用customer ${#sessionScope.CurrentUser.userName}期望struts使用此OGNL表达式,但它没有奏效。

回答

2

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

+0

我在拦截器中使用getText。所以你认为最好的方法是做什么。 –

+0

您可以在拦截器中使用它,因为您可以在那里获取动作实例并实现一个'TextProvider'。恕我直言,如果你明白它是如何工作的,你可以在动作和拦截器中使用'getText',但是在消息资源中你也可以使用'MessageFormat'变量。无论最好的方式取决于你,我个人更喜欢第二种方式。 –

1

我发现谷栈中已经有会话与#session所以

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

工作正常。

+0

为什么你标记的回答没有回答你接受的问题? Upvote就足够了。 –