一尘不染

从jsp的显示标签表中获取行ID到struts 2动作类中

jsp

我正在使用显示标签在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”值。

这里的想法是,如果用户单击“编辑”,则该行的数据将填充到表单中以进行编辑。如果用户单击删除,则该行将从数据库中删除,并且显示表将在JSP上更新。

请指教。

谢谢!!


阅读 231

收藏
2020-06-10

共1个答案

一尘不染

如果display:table标签具有属性uid="foobar"(或id="foobar"),则可通过页面上下文属性“
foobar”使用列表的当前元素。参见http://www.displaytag.org/1.2/displaytag/tagreference.html

2020-06-10