Richfaces datatable, filter works in unexpected way
jeroenvanveghel May 16, 2013 5:43 AMHi,
My problem is very strange to me.
Im looking for a rich datatable (or extendeddatatable, it does not really matter for me) which can filter certain columns.
From the richfaces showcase i followed the extended datatable example and explicitly for the vendor column.
You can find the example here: Showcase example
I made the filter work eventually, but all of a sudden there is a input text field below the selectbox to filter.
That input field should not be there, because i have no use for it. Can someone help me out to get rid of this?
The attached image can show you what happened.
my .xthml code:
<rich:extendedDataTable value="#{AddAttribuutPB.allDocuments}"
var="doc" id="table"
style="height:300px; width:500px;" selectionMode="none">
<f:facet name="noData">
Nothing found
</f:facet>
<rich:column filter="#{DocumentenFilteringBean.filterVendor}" >
<f:facet name="header">
<h:panelGroup>
<h:outputText value="Soort "/>
<h:selectOneMenu value="#{DocumentenFilteringBean.vendorFilter}">
<f:selectItems value="#{AddAttribuutPB.DocumentSoortOptions()}" var="docsoort" itemLabel="#{docsoort.document_soort_omschrijving}" itemValue="#{docsoort.document_soort_omschrijving}"/>
<a4j:ajax render="table" execute="@this" event="change"/>
</h:selectOneMenu>
</h:panelGroup>
</f:facet>
<h:outputText value="#{doc.document_soort.document_soort_omschrijving}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Naam"/>
</f:facet>
<h:outputText value="#{doc.document_naam}"/>
</rich:column>
</rich:extendedDataTable>
My DocumentenFilteringBean.java:
@ManagedBean(name="DocumentenFilteringBean")
@SessionScoped
public class DocumentenFilteringBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5680001353441022183L;
private String vendorFilter;
public Filter<?> getFilterVendor() {
return new Filter<Document>() {
public boolean accept(Document t) {
String vendor = getVendorFilter();
if (vendor == null || vendor.length() == 0 || vendor.equals(t.getDocument_soort().getDocument_soort_omschrijving())) {
return true;
}
return false;
}
};
}
public String getVendorFilter() {
return vendorFilter;
}
public void setVendorFilter(String vendorFilter) {
this.vendorFilter = vendorFilter;
}
}
I know i didn't follow the code example exactly, but otherwise the getFilterVendor() wouldn't even get called!
Thanks in advance
-
datatable_filter.JPG 13.2 KB