我目前正在使用Struts2(没有经验的开发人员)并且我一直在搜索,但我无法找到如何将OGNL表达式应用于存储在上下文中的变量。
问题是我需要从Context中检索一个参数并将其大写。到现在为止,我已经尝试过这样做,但遗憾的是没有运气:
<s:property value="#myVar.toUpperCase()" />
由于这适用于存储在ValueStack中的变量(没有#的符号),我真的不明白为什么这不能用于存储在Context中的任何内容。
如果我没有将#myVar
附加到.toUpperCase()
,我就可以正常打印<s:property value="<s:property value="#myVar"/>.toUpperCase()"/>
内容。
还尝试了这种解决方法,但没有帮助:
{{1}}
那么我想念的是什么?如何将OGNL表达式应用于存储在Context中的变量?
答案 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()" />