Primefaces 获取排序列的名称
Primefaces get name of sorted column
我需要获取数据表中 sorted/filtered 列的名称。
通过 ajax-事件 "filter",我得到了过滤后的值和列名。
对于排序,我使用了 even "sort" 但找不到 returns me 排序列的名称
的方法
<p:dataTable id="userTable" var="user" value="#{userController.lazyModel}"
widgetVar="userTableVar" selection="#{userController.selectedUser}"
paginator="true" rows="#{userController.defaultRows}" paginatorPosition="bottom" rowSelectMode="checkbox"
lazy="true"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {PageLinks} {CurrentPageReport} {NextPageLink} {LastPageLink}"
rowKey="#{user.userId}" rowsPerPageTemplate="#{userController.rowOptions}"
emptyMessage="#{bundle.noRows}" >
<p:ajax event="sort" listener="#{userController.onSort}"></p:ajax>
<p:ajax event="filter" listener="#{userController.onFilter}"></p:ajax>
<p:column selectionMode="multiple" style="width:16px;text-align:center"/>
<p:column sortBy="#{user.username}" filterBy="#{user.username}" style="width: 20%;" >
<f:facet name="header" >
<h:outputText value="Username"></h:outputText>
</f:facet>
<h:outputText value="#{user.username}"></h:outputText>
</p:column>
<p:column sortBy="#{user.userRight}" filterBy="#{user.userRight}" style="width: 20%;" >
<f:facet name="header" >
<h:outputText value="Userright"></h:outputText>
</f:facet>
<h:outputText value="#{user.userRight}"></h:outputText>
</p:column>
</p:dataTable>
public void onSort(SortEvent event) {
System.out.println(event.isAscending() + " - "
+ event.getSortColumnIndex() + " - "
+ event.getSortColumn().getField());
}
public void onFilter(FilterEvent event) {
System.out.println(event.getFilters());
}
您需要在 p:column
上设置 field
属性。
Name of the field to pass lazy load method for filtering and sorting. If not specified, filterBy
/ sortBy
values are used to identify the field name.
那么event.getSortColumn().getField()
就可以了。
我需要获取数据表中 sorted/filtered 列的名称。 通过 ajax-事件 "filter",我得到了过滤后的值和列名。 对于排序,我使用了 even "sort" 但找不到 returns me 排序列的名称
的方法<p:dataTable id="userTable" var="user" value="#{userController.lazyModel}"
widgetVar="userTableVar" selection="#{userController.selectedUser}"
paginator="true" rows="#{userController.defaultRows}" paginatorPosition="bottom" rowSelectMode="checkbox"
lazy="true"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {PageLinks} {CurrentPageReport} {NextPageLink} {LastPageLink}"
rowKey="#{user.userId}" rowsPerPageTemplate="#{userController.rowOptions}"
emptyMessage="#{bundle.noRows}" >
<p:ajax event="sort" listener="#{userController.onSort}"></p:ajax>
<p:ajax event="filter" listener="#{userController.onFilter}"></p:ajax>
<p:column selectionMode="multiple" style="width:16px;text-align:center"/>
<p:column sortBy="#{user.username}" filterBy="#{user.username}" style="width: 20%;" >
<f:facet name="header" >
<h:outputText value="Username"></h:outputText>
</f:facet>
<h:outputText value="#{user.username}"></h:outputText>
</p:column>
<p:column sortBy="#{user.userRight}" filterBy="#{user.userRight}" style="width: 20%;" >
<f:facet name="header" >
<h:outputText value="Userright"></h:outputText>
</f:facet>
<h:outputText value="#{user.userRight}"></h:outputText>
</p:column>
</p:dataTable>
public void onSort(SortEvent event) {
System.out.println(event.isAscending() + " - "
+ event.getSortColumnIndex() + " - "
+ event.getSortColumn().getField());
}
public void onFilter(FilterEvent event) {
System.out.println(event.getFilters());
}
您需要在 p:column
上设置 field
属性。
Name of the field to pass lazy load method for filtering and sorting. If not specified,
filterBy
/sortBy
values are used to identify the field name.
那么event.getSortColumn().getField()
就可以了。