我对一些与 OGNL 混合的 Struts2 标签有疑问。为了克服不能在 OGNL 中嵌套表达式求值的事实,例如,%{foo[%{bar}]}
,我使用对变量的连续赋值来获得我需要的结果。
在下面的代码中,vargrpIndex
评估正确,例如'6'
or '7'
就我而言,并在下一行正确打印出来。以下语句(第 3 行)也可以正确计算,例如,'stage'
or 'prod'
就我而言。
但是,在第四行中,我尝试使用与前一行相同的语法将相同的表达式设置到变量中,以便我可以在标题中使用它。为了测试这个作业,我尝试打印下一行的 var 。我希望最后一行打印与第三行相同的值。然而,这个表达式什么也没打印出来。为什么是这样?
<s:set var="grpIndex" value="%{options[#optstatus.index]}"/>
grpIndex = <s:property value="#grpIndex"/><br/>
grpName = <s:text name="model[%{grpIndex}].groupName"/><br/>
<s:set var="grpName" value="model[%{grpIndex}]).groupName"/>
groupName = <s:property value="#grpName"/>
首先你正在使用<s:text>
(第 3 行)而不是<s:property>
这会产生错误的测试结果。其次,第 4 行有一个拼写错误(未打开的括号)。最重要的是不要使用%{}
inside []
in <s:property>
or <s:set>
tags.
<s:set var="grpIndex" value="options[#optstatus.index]"/>
grpIndex = <s:property value="#grpIndex"/><br/>
grpName = <s:property value="model[#grpIndex].groupName"/><br/>
<s:set var="grpName" value="model[#grpIndex].groupName"/>
groupName = <s:property value="#grpName"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)