以編程方式創建lazy datatable(使用binding和valExp)sortField始終爲null,sortorder升序,過濾器映射{}。這是在單擊一個分類字段或在過濾字段中輸入一個字符串。Primefaces Datatable sortField null和過濾器map {}以編程方式創建
當同樣的做法沒有綁定,所有在xhtml視圖中,一切都按照廣告的方式工作。我也查看了PhaseListener的加載順序,在兩種情況下都沒有發現任何不同,只是在第一次不起作用。
TestController是@ViewScoped。試用PF版本3.5,3.4.2,3.3.1,3.3。
我做錯了嗎?
視圖
<p:dataTable binding="#{testController.datatable}" />
<p:dataTable value="#{testController.testModel}" var="val" rows="5" lazy="true">
<p:column sortBy="#{val}">
#{val}
</p:column>
</p:dataTable>
代
datatable = new DataTable();
datatable.setValueExpression("lazy",createValueExpression("true", Boolean.class));
datatable.setValueExpression("rows",createValueExpression("10", Integer.class));
datatable.setValueExpression("value",createValueExpression("#{testController.testModel}", DataModel.class));
datatable.setVar("val");
Column column = new Column();
column.setValueExpression("sortBy", createValueExpression("#{val}", String.class));
HtmlOutputText output = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
output.setValueExpression("value", createValueExpression("#{val}", String.class));
column.getChildren().add(output);
datatable.getChildren().add(column);
模型
public List<String> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {
List<String> modelMock = new ArrayList<String>() {
{
add("abc");
add("def");
}
};
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("load()");
}
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("first " + first + " pageSize" + pageSize);
LOGGER.debug("sortField -> " + sortField);
LOGGER.debug("sortOrder -> " + sortOrder);
LOGGER.debug("filters -> " + filters);
}
this.setRowCount(modelMock.size());
return modelMock;
}
調試輸出
11:12:24,426 DEBUG TestModel:33 - load()
11:12:24,426 DEBUG TestModel:37 - first 0 pageSize10
11:12:24,426 DEBUG TestModel:39 - sortField -> null
11:12:24,426 DEBUG TestModel:40 - sortOrder -> ASCENDING
11:12:24,426 DEBUG TestModel:41 - filters -> {}
的第二數據表,這證明了當相同的不與結合使用時,它的工作原理
11:21:25,677 DEBUG TestModel:33 - load()
11:21:25,677 DEBUG TestModel:37 - first 0 pageSize5
11:21:25,677 DEBUG TestModel:39 - sortField -> val
11:21:25,677 DEBUG TestModel:40 - sortOrder -> DESCENDING
什麼是使用javax.faces.FULL_STATE_SAVING_VIEW_IDS的缺點,將其設置爲指定的頁面?高架? – apod 2013-03-25 11:43:06
例如,它可以通過增加內存使用量來影響性能。你可以在這裏閱讀信息:http://stackoverflow.com/questions/10337015/should-partial-state-saving-be-set-to-false – 2013-03-26 14:17:51