Мне нужно установить sortBy для DataTable программным путем bean. DataTable имеет один режим сортировки, статические столбцы и пользовательскую ленивую модель для сортировки по пользовательским выражениям типа = "# {contractor.companyName-MULTY_LANG}". Я пробовал много способов сделать это, и только один способ работает (код ниже), но работает не правильно - компонент показан без выделенного упорядоченного поля. Может ли кто-нибудь ответить, как правильно выбрать метод sortBy для DataTable программно?
@PostConstruct
public void init() {
final DataTable d = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent(TABLE_COMPONENT_KEY);
String tableSortByExpression = "#{contractor.companyName-MULTY_LANG}"; // expression from some column
SortMeta sm1 = new SortMeta();
for (UIComponent child : d.getChildren()) {
Column column = (Column)child;
ValueExpression columnSortByVe = column.getValueExpression("sortBy");
if (columnSortByVe != null) {
String columnSortByExpression = columnSortByVe.getExpressionString();
if (tableSortByExpression != null && tableSortByExpression.equals(columnSortByExpression)) {
d.setSortColumn(column);
d.setSortOrder("ASCENDING");
break;
}
}
}
}
Буду признателен за любую помощь.
Графики 5.1. Tomcat 7. Mojarra 2.2.8