Уникальные идентификаторы struts2-jquery для диалога в итераторе

У меня есть таблица со многими строками, и каждая строка имеет ссылку на модальное диалоговое окно с использованием struts2-jquery. Мне нужно установить уникальный идентификатор для каждого диалогового окна, чтобы настроить это, но я безуспешно пробовал несколько вариантов.

        <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>

Поэтому вместо «dialog3» я хочу что-то вроде dialog%{status.index}. Я могу установить этот идентификатор... но как мне сослаться на него в теге привязки? К сожалению, для диалога нет параметра var :(


person user1277546    schedule 29.11.2012    source источник


Ответы (1)


Просто используйте %{#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 всегда помещается в стек значений. Поскольку действие находится в стеке, а стек является корнем OGNL, ссылки на свойства действия могут опускать маркер #. Но для доступа к другим объектам в ActionContext мы должны использовать нотацию #, чтобы OGNL знала, что нужно искать не корневой объект, а какой-то другой объект в ActionContext.

Прочтите об OGNL в Struts2: http://struts.apache.org/2.x/docs/ognl.html.

person Aleksandr M    schedule 29.11.2012
comment
Я считаю, что объяснение того, почему использовать эту нотацию, поможет OP лучше понять ее, а также поможет любому в будущем с той же проблемой. - person Umesh Awasthi; 29.11.2012