将OGNL表达式应用于上下文变量

时间:2014-11-19 11:16:29

标签: variables struts2 expression ognl

我目前正在使用Struts2(没有经验的开发人员)并且我一直在搜索,但我无法找到如何将OGNL表达式应用于存储在上下文中的变量。

问题是我需要从Context中检索一个参数并将其大写。到现在为止,我已经尝试过这样做,但遗憾的是没有运气:

<s:property value="#myVar.toUpperCase()" />

由于这适用于存储在ValueStack中的变量(没有#的符号),我真的不明白为什么这不能用于存储在Context中的任何内容。

如果我没有将#myVar附加到.toUpperCase(),我就可以正常打印<s:property value="<s:property value="#myVar"/>.toUpperCase()"/> 内容。

还尝试了这种解决方法,但没有帮助:

{{1}}

那么我想念的是什么?如何将OGNL表达式应用于存储在Context中的变量?

1 个答案:

答案 0 :(得分:1)

您的变量很可能不是字符串,因此其中没有toUpperCase()方法。解决方案是在致电toString()之前致电toUpperCase()

<s:property value="#myVar.toString().toUpperCase()" />

<强>更新

实际上你的问题在<s:set var="myVar" value="%{#parameters.myVar}"/>,因为参数中可能会有多个myVar它会返回一个字符串数组,所以如果你只需要一个参数就可以将你的表达式改为{{1}然后#parameters.myVar[0]将起作用。

toUpperCase()

OR

<s:set var="myVar" value="%{#parameters.myVar[0]}"/>
<s:property value="#myVar.toUpperCase()" />