Получить идентификатор строки из таблицы тегов отображения на jsp в классе действий Struts 2 - PullRequest
1 голос
/ 14 декабря 2011

Я использую тег отображения для отображения данных в таблице на JSP.Теперь я хочу дать две ссылки для каждой строки, одну для редактирования и одну для удаления строки.

В стеке есть несколько сообщений, относящихся к одному и тому же ([вопрос]: Как использовать несколько кнопок (по одной в каждой строке) для страницы JSP с помощью Struts2 , [вопрос]: Получить значение из строки на странице JSP с помощью тега отображения , [вопрос]: Получение значения из строки в Struts2Таблица При использовании Displaytag ), но я не смог найти решение, которое работает для меня.

И Google дал мне (http://demo.displaytag.org/displaytag-examples-1.2/example-decorator-link.jsp), но он использует перезапись URL, который я не могухочу использовать и, кроме того, демонстрирует использование со стояками (я использую распорки 2).

Моя структура jsp и то, что я сейчас пытаюсь:

<s:url id="editReport" action="editReport" />
<sd:div href="%{editReport}" listenTopics="editReport" formId="actionForm" showLoadingText="false" preload="false">
    <s:url id="updLists" action="updLists" />
    <sd:div href="%{updLists}" listenTopics="updLists" formId="enterDayReport" showLoadingText="false" preload="false">
        <s:form id="enterDayReport" action="enterDayReport">
            <sd:autocompleter  label="Customer " name="customer" list="customerList"  valueNotifyTopics="updLists" autoComplete="false" searchType="substring"/>
            <sd:autocompleter  label="Contact "  name="contact"  list="contactList"   valueNotifyTopics="updLists" autoComplete="false" searchType="substring"/>
            <s:select          label="Stage "    name="stage"    list="stageList"     headerKey="0" headerValue="Select" />
            <s:select          label="Type "     name="type"     list="typeList"      headerKey="0" headerValue="Select" />
            <sd:datetimepicker label="Date"      name="date"     formatLength="small" displayFormat="dd - MMM - yyyy"/>
            <s:textarea        label="Summary"   name="summary"  cols="40" rows="10"/>
            <s:submit          value="Save Report"/>
        </s:form>
    </sd:div>
</sd:div>

<s:url id="deleteReport" action="deleteReport" />
<sd:div href="%{deleteReport}" listenTopics="deleteReport" formId="actionForm" showLoadingText="false" preload="false">
    <disp:table name="dayReportsList" export="true" class="dataTable">
        <disp:column property="contactCode" title="Contact"/>
        <disp:column property="customerCode" title="Customer"/>
        <disp:column property="stage" title="Stage"/>
        <disp:column property="type" title="Type"/>
        <disp:column property="summary" title="Summary"/>
        <disp:column property="reportDate" title="Date" format="{0,date,dd-MMM-yyyy}" />
        <disp:column property="rowId" href="%{editReport}" paramId="rowID" paramProperty="rowId" title="Action">
            <s:form id="actionForm" name="actionForm">
                <s:hidden id="rowId" name="rowId" value="%{rowId}"/>  // This is not getting populated.
                <s:a onclick="dojo.event.topic.publish('editReport')">Edit<s:property value="rowId"/></s:a><br>
                <s:a onclick="dojo.event.topic.publish('deleteReport')">Delete</s:a>
            </s:form>
        </disp:column>
    </disp:table>
</sd:div>

Вот единственная проблема, с которой я сталкиваюсьявляется то, что поле hidden в таблице тегов отображения не заполняется значением "rowId", которое является частью "dayReportsList".

Идея заключается в том, что если пользователь нажимает кнопку "Изменить",данные для строки заполняются в FОрм для редактирования.И если пользователь нажимает кнопку «Удалить», строка удаляется из базы данных, а таблица отображения обновляется в JSP.

Пожалуйста, сообщите.

Спасибо !!

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

Текущий элемент списка доступен через атрибут контекста страницы "foobar", если тег display:table имеет атрибут uid="foobar" (или id="foobar").Смотри http://www.displaytag.org/1.2/displaytag/tagreference.html

0 голосов
/ 22 июня 2015

Тег отображения использует Неявные объекты для хранения номера строки.Вот пример из документации по тегу отображения:

<display table id="row" name="mylist">
  <display:column title="row number" >
    <c:out value="${row_rowNum}"/>
  </display:column>
  <display:column title="name" >
    <c:out value="${row.first_name}"/>
    <c:out value="${row.last_name}"/>
  </display:column>
</display:table>

Таким образом, вы можете использовать EL для доступа к номеру строки, который сохраняется как автоматически созданный объект.Его имя определяется вашей переменной id (в данном случае row) с добавлением _rowNum (в данном случае, результатом является ${row_rowNum}).

Помните, что нумерация начинается с 1, а не св 0.

...