Ada kalanya saat menggunakan ADF, kita mem-bind suatu table tidak melalui business component, misalnya data tersebut tidak berasal dari database, bisa jadi hasil dari suatu kalkulasi di engine tertentu dan resultnya berupa list, atau bisa juga data didapat dari invokasi service (soap/rest).
Melalui artikel ini saya ingin berbagi trik yang saya lakukan untuk melakukan multiple selection di adf table yang bindingnya tidak melalui business component, tetapi di-binding ke Object List yang ada di backing bean atau managed bean.
Kita tambahkan property boolean pada Object yang digunakan:
dan kita tambahkan checkbox di kolom table:
di backing bean (TestPageBacking), di method printSelected dibuat checker utk object yang selected:
contoh tampilannya:
bila di-klik button Print Selected, maka akan terlihat di log:
Semoga berguna.
Melalui artikel ini saya ingin berbagi trik yang saya lakukan untuk melakukan multiple selection di adf table yang bindingnya tidak melalui business component, tetapi di-binding ke Object List yang ada di backing bean atau managed bean.
Kita tambahkan property boolean pada Object yang digunakan:
public class AnObject{
private int id;
private String code;
private String description;
private boolean selected; // <- add this boolean property
//setter getter
}
dan kita tambahkan checkbox di kolom table:
<af:commandButton text="Print Selected" action="#{TestPageBacking.printSelected}"/>
<af:table var="row" rowBandingInterval="0"
value="#{TestPageBacking.listObject}"
styleClass="AFStretchWidth"
columnStretching="last">
<!-- add this checkbox column -->
<af:column sortable="false" headerText="" width="20">
<af:selectBooleanCheckbox value="#{row.selected}"/>
</af:column>
<af:column sortable="false" headerText="id" width="200">
<af:outputText value="#{row.id}"/>
</af:column>
<af:column sortable="false" headerText="code">
<af:outputText value="#{row.code}"/>
</af:column>
<af:column sortable="false" headerText="description">
<af:outputText value="#{row.description}"/>
</af:column>
</af:table>
di backing bean (TestPageBacking), di method printSelected dibuat checker utk object yang selected:
private List<AnObject> listObject;
public void printSelected(){
System.out.println("selected objects:");
for(int i=0; i<listObject.size();i++){
if(listObject.get(i).isSelected()){
AnObject ao = listObject.get(i);
System.out.println("- "+ao.getId()+", "+ao.getCode()+", "+ao.getDescription());
}
}
}
//setter getter listObject
contoh tampilannya:
bila di-klik button Print Selected, maka akan terlihat di log:
selected objects:
- 1, satu, object pertama
- 3, tiga, object ketiga
Semoga berguna.
No comments:
Post a Comment