Для тех, кто все еще застрял на том, что должно быть сделано, вот что я наконец-то сделал, чтобы заставить его работать.
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:hidden id="filedOnDate" name="filedOnDate"/>
<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" refreshOnShow="true" preload="false">
<s:form id="actionForm" name="actionForm" action="">
<disp:table uid="dayReport" 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 title="Action">
<s:a href="" onclick="editEvent(event,%{#attr.dayReport.rowId});">Edit</s:a><br>
<s:a href="" onclick="deleteEvent(event,%{#attr.dayReport.rowId});">Delete</s:a>
</disp:column>
</disp:table>
<s:hidden id="rowId" name="rowId"/>
</s:form>
</sd:div>
Файл JS:
function editEvent(e,rowId)
{
dojo.byId('rowId').value=rowId;
dojo.event.topic.publish('editReport');
}
function deleteEvent(e,rowId)
{
dojo.byId('rowId').value=rowId;
dojo.event.topic.publish('deleteReport');
}
Это то, что происходит здесь:
При нажатии на правку или удаление вызывается соответствующая функция в js (и передается rowId).Каждая функция сначала устанавливает значение скрытого поля равным значению rowId (которое является параметром для функции), а затем наказывает за тему.Когда тема опубликована, соответствующий div вызывает действие и обновляется новым содержимым.Здесь я упомянул идентификатор формы в теге div, так что у действия есть значение скрытого поля, для которого в javascript было установлено значение rowId.
Надеюсь, это поможет
Kanishk