Я использую тег отображения для отображения данных в таблице на 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.
Пожалуйста, сообщите.
Спасибо !!