动态dataTable和sortBy无法正常工作

时间:2014-11-06 01:01:52

标签: jsf primefaces

我正在使用primefaces和dataTable(延迟模式),我需要在fly / in代码中生成dataTables的定义。我能够构建dataTable,列,标签,值,......但排序不起作用。

我试过了:

column.setSortBy("name"); // where name is name of property/column
column.setSortBy("#{row['name']}"); // where row is map and name is name of property/column - this is what im using in XML version and it working very well
column.setSortBy(ef.createValueExpression(context, "#{row['name']}", Object.class));

DataTable看起来与禁用排序(标签上没有箭头)......

当我在XML中定义时,一切正常(它不是关于lazyDataModel或模型层中的任何其他内容)。

1 个答案:

答案 0 :(得分:0)

试试此代码

   FacesContext context = FacesContext.getCurrentInstance();
   ExpressionFactory expressionFactory = context.getApplication().getExpressionFactory();

   ValueExpression valueExpression = expressionFactory.createValueExpression(context.getELContext(), "#{row['name']}", String.class);

   column.setValueExpression("sortBy", valueExpression);

我使用String.class,因为我认为"#{row [' name']}"评估为类String的实例。