使用struts2应用程序中的复选框删除

时间:2012-05-10 08:41:21

标签: java checkbox struts2

我想使用struts2应用程序中的复选框实现删除功能。我在jsp页面中使用display标签来显示报告。我需要提供包含报告的复选框以删除所选报告。我在jsp页面中尝试过这段代码:

<s:form name="listPage">
<display:table name="egnreports" class="table" id="egnreports" requestURI=""  export="true" pagesize="30">

<display:column>
 <s:checkbox name="checked" fieldValue='%{egnreports.id}' />
</display:column>

<display:column value="<%=egnreports_rowNum%>" title="S.No." />

<display:column property="createDate" sortable="true" titleKey="egnreport.createDate" style="width:13.5%"/>

<-- Other Table data here -->

</display:table>
</s:form>
<c:out value="${buttons}" escapeXml="false" />

在我的动作课中,我使用了这个:

 private String[] checked; 

public String[] getChecked() {

    return checked;
}

public void setChecked(String[] checked) {

    this.checked=checked;

}

当我尝试检索所选值以删除相应的报告时,我得到一个空指针异常:

for (String code : checked) { 

    System.out.println(code + " is selected"); 
    System.out.println("id="+egnreport.getId());
        egnreportManager.remove(egnreport.getId());
        saveMessage(getText("ireport.deleted"));
        }

如果我使用

<display:column>
 <input type="checkbox" name="checked" value="${egnreports.id}"/>
 </display:column>

代替s:checkbox标签,我能够在报告页面中看到这些值(使用firebug),但仍然没有在动作类中填充它们。

使用

<input type="checkbox" name="checked" value="${egnreports.id}"/> 

我得到了

<td> <input type="checkbox" value="5" name="checked"> </td> 

作为渲染的html,而

<s:checkbox name="checked" fieldValue='%{egnreports.id}' />  

我得到了

<td> 
<div id="wwgrp_egnDeskReports_checked" class="wwgrp"> 
<div id="wwctrl_egnDeskReports_checked" class="wwctrl"> 
<input id="egnDeskReports_checked" type="checkbox" value="" name="checked"> 
<input type="hidden" value="" name="__checkbox_checked"> 
</div> 
</div> 
</td>  

此外,我无法将"${egnreports.id}"s:checkbox一起使用来获取id的值。 我哪里做错了?任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:3)

我有解决方案:我必须使用fieldValue =“%{#attr.egnreports.id}”,即

<s:checkbox name="checked"  fieldValue="%{#attr.egnreports.id}" value="false"/>

传递选中的值。 还记得在表单标签中包含按钮,我之前没有注意过这个:

<c:out value="${buttons}" escapeXml="false" />    
</s:form>

: - )