Jon*_*her 5 java java-ee composite-component jsf-2 state-saving
我正在创建一个复合组件,它将包装数据表以实现非常简单的分页.我需要在ajax请求之间保存状态(当前页码).
我尝试在FacesComponent中创建字段,但我发现它们在JSF生命周期中被删除了:
@FacesComponent(value = "bfTableComponent")
public class BFTableComponent extends UIComponentBase implements NamingContainer {
private int currentPageNumber;
...
Run Code Online (Sandbox Code Playgroud)
我似乎无法在任何地方找到这样做的简明指南!在创建复合组件时,如何在请求之间保存状态?
Bal*_*usC 10
使用StateHelper.它是可用的UIComponent#getStateHelper().
private enum PropertyKeys {
currentPageNumber;
}
public void setCurrentPageNumber(int currentPageNumber) {
getStateHelper().put(PropertyKeys.currentPageNumber, currentPageNumber);
}
public int getCurrentPageNumber() {
return (int) getStateHelper().eval(PropertyKeys.currentPageNumber, 0);
}
Run Code Online (Sandbox Code Playgroud)
请注意,我0在getter中返回默认值.您可能希望更改int为Integer并删除默认值,以便null返回.
与具体问题无关,您可以更简单地扩展UINamingContainer而不是实现NamingContainer.这样你可以省略被覆盖的getFamily()方法,因为它已经正确实现了UINamingContainer.
| 归档时间: |
|
| 查看次数: |
2576 次 |
| 最近记录: |