0

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;

}

選択した値を取得して対応するレポートを削除しようとすると、nullポインター例外が発生します。

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>  

また、idの値を取得するために"${egnreports.id}"withを使用することはできません。s:checkboxどこで私は間違えましたか?誰かがこれで私を助けることができますか?

4

1 に答える 1

3

私は解決策を持っています:fieldValue = "%{#attr.egnreports.id}"を使用する必要があります。

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

チェックされた値を渡します。また、フォームタグ内にボタンを含めることを忘れないでください。以前はこれに注意を払っていませんでした。

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

:-)

于 2012-06-09T10:32:15.173 に答える