我有一个包含许多行的表,并且每行都有一个使用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

10-06 05:39