使用display标签从JSP页面中的行获取值

时间:2010-08-13 22:03:51

标签: java jsp web-applications struts2 displaytag

很抱歉有一堆Struts2 / JSP问题,但我有一个用Display tag生成的表:

<display:table name="table" pagesize="10" id="row" requestURI="">
<display:column title="Action">
    <s:form theme="simple">
        <s:submit action="remove" value="Remove" 
        onclick="return confirm('Are you sure you want to delete this item?');"/>
        <s:submit action="displayEdit" value="Edit"/>
    </s:form>
</display:column>
<display:column property="cpc" title="CPC"/>
<display:column property="companyName" title="Company Name"/>
<display:column property="eventType" title="Event Type"/>
<display:column property="industryType" title="Industry Type"/>
<display:column property="previousEvents" />
<display:column property="creditNotifications" />
<display:column property="interimNotifyEnterprise" />
</display:table>

现在我希望能够删除或编辑某一行(我已经写出了行动),但是如何获取每一行的具体数据,以便我可以告诉我的Action类要编辑或删除哪一行?

3 个答案:

答案 0 :(得分:3)

我前几天你提到的question提到过这个问题。您只需要在您的行中创建一些可能用于唯一标识项目的隐藏字段。

我建议在行中使用<s:hidden key="rowID" />,这将随行动一起提交。只要您在对象上有这样的属性,并且在删除操作中,您有一个接收该值的setter,您可以使用它来唯一标识该行。

答案 1 :(得分:0)

您的表似乎在每行Object对象中没有唯一标识符字段。 您可以在要显示的bean类中添加字段-id。 (companyId in Company bean class)。因此,表中的每一行都将显示唯一的“公司”对象,并且根据“companyId”字段,您可以通过将“companyId”传递给Action类来编辑/删除所选对象。

您可能不希望在UI布局中向最终用户显示“companyId”列。在这种情况下,您可以使用'companyId'作为参数创建'edit'和'delete'列的超链接。

有关详情,请参阅此site的displaytag教程。

答案 2 :(得分:0)

使用以下内容获取行ID。 例如,我使用了单选按钮,

<display:column  property="radioButton" title="ID">
                  <input type="radio" value='<%=data_rowNum.intValue()-1%>' name='rowNr' onClick="fnEnableControls()"/>
</display:column>

现在你可以使用req.getParameter轻松获取rowNr的值,并且基于此,你可以从你提供给显示标记表的列表中获取记录。