1

我遇到了问题,我真的不知道为什么会发生这种情况,我对 OGNL 很陌生...所以我有一个定义了一个图块的布局,另一个图块扩展了这个布局并放置了一个键用于显示该键的 DB 上的值,假设被调用keyName,我想使用 OGNL 呈现该值,如下所示:

<s:label value="%{getText('%{keyName}')}"/>

但是显示的是 keyName 的推入值而不是 DB 的值...,如果我尝试对 keyValue 进行硬编码并且工作正常,例如:

<s:label value="%{getText('strWelcome')}"/>

这正确显示strWelcome了数据库中键的值......关于如何修复它的任何建议?

注意:我尝试使用keyName类似 JSTL 变量,但告诉我无法将动态值传递给getText().

4

1 回答 1

3

OGNL 不是这样工作的,它要么OGNL 表达式,要么不是OGNL 表达式,你不要说“这是一个 OGNL 表达式”然后在表达式里面说“哦,这是一个 OGNL 表达式”,你只需要这样做一次。

最终结果是这些可能是正确的表达方式:

<s:label value="%{getText(keyName)}"/> 

作为一个值属性,我怀疑 OGNL 是假设的,所以这应该有效

<s:label value="getText(keyName)"/> 

这假定变量“keyName”在操作范围内,如果它在不同的范围内,您可能需要附加一个“#”或者您可以更具体,有关访问不同范围的详细信息,请参阅:http://struts .apache.org/release/2.2.x/docs/ognl.html

于 2013-05-10T20:08:21.797 回答