我有一个包含许多行的表,并且每行都有一个使用struts2-jquery的模式对话框的链接。为了设置此对话框,我需要为每个对话框设置唯一的ID,但是我尝试了多个选项但没有运气。
<s:iterator value="myBeanList" var="rrSum" status="status">
<tr>
<td>
<s:url id="ajax%{status.index}" action="smoRiskRegister" var="ajaxURL">
<s:param name="requestRiskID"><s:property value="#rrSum.rid" /></s:param>
</s:url>
<sj:dialog id="dialog3" href="%{ajaxURL}" title="Testing" />
<sj:a openDialog="dialog3"><s:property value="#rrSum.rid" /></sj:a>
</td>
</tr>
</s:iterator>
因此,我希望使用dialog%{status.index}之类的东西来代替“ dialog3”。我可以将ID设置为此...但是如何在锚标记中引用它?不幸的是,对话框没有var参数:(
最佳答案
只需在锚标记中使用%{#status.index}
即可。
<sj:dialog id="dialog%{#status.index}" href="%{ajaxURL}" title="Testing" />
<sj:a openDialog="dialog%{#status.index}"><s:property value="#rrSum.rid" /></sj:a>
注意
#
符号,当访问的对象不在OGNL根目录中时,必须使用它。Action实例始终被推入值堆栈。因为Action在堆栈上,并且堆栈是OGNL根,所以对Action属性的引用可以省略#标记。但是,要访问ActionContext中的其他对象,我们必须使用#表示法,以便OGNL知道不要查看根对象,而要查看ActionContext中的其他对象。
在Struts2中阅读有关OGNL的信息:http://struts.apache.org/2.x/docs/ognl.html。