【发布时间】:2011-12-19 12:21:44
【问题描述】:
我正在使用显示标签在 JSP 上的表中显示数据(使用 struts 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>
我在这里面临的问题是,与显示标签中每一行关联的表单的name 是相同的。因此,当我尝试访问我的操作类中的rowId 变量时,我只获取第一行的rowId 的值,无论单击哪一行的按钮。
我看过一些关于堆栈溢出和 google 的使用 URL 重写的示例,但我不想使用它。
请指教。
谢谢!!
【问题讨论】:
-
不应将此问题标记为 javascript
-
@Munter 我希望如果我可以在 javascript 中设置一个请求参数或类似的东西,然后在操作类中访问它,它应该可以解决问题。然后我将能够将参数值设置为“rowId”并在操作类中访问它以了解单击了哪一行。有没有办法做到这一点?
标签: jsp dojo struts2 action displaytag