我正在使用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或模型层中的任何其他内容)。
答案 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
的实例。