我正在使用显示标签在JSP上的表中显示数据。现在,我想为每行提供两个链接,一个用于编辑,一个用于删除该行。
关于stackoverflow的一些帖子都涉及到相同的问题(问题:如何使用Struts2在JSP页面上使用多个按钮(每行一个),[问题]:使用显示标签问题[从JSP页面中的一行获取值:在使用Displaytag时从Struts2表中的行中检索值,但是我找不到适合我的解决方案。
谷歌给了我(http://demo.displaytag.org/displaytag-examples-1.2/example-decorator- link.jsp),但是它使用了我不想使用的URL重写,并且演示了与struts(我正在使用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>
在这里,我面临的唯一问题是hidden显示标记表中的字段没有填充“ dayIdsList”的一部分“ rowId”值。
hidden
这里的想法是,如果用户单击“编辑”,则该行的数据将填充到表单中以进行编辑。如果用户单击删除,则该行将从数据库中删除,并且显示表将在JSP上更新。
请指教。
谢谢!!
如果display:table标签具有属性uid="foobar"(或id="foobar"),则可通过页面上下文属性“ foobar”使用列表的当前元素。参见http://www.displaytag.org/1.2/displaytag/tagreference.html
display:table
uid="foobar"
id="foobar"