我正在创建一个复合组件,它将包装数据表以实现非常简单的分页。我需要在 ajax 请求之间保存状态(当前页码)。
我尝试在 FacesComponent 中创建字段,但发现它们在 JSF 生命周期中被删除:
@FacesComponent(value = "bfTableComponent")
public class BFTableComponent extends UIComponentBase implements NamingContainer {
private int currentPageNumber;
...
我似乎无法在任何地方找到执行此操作的简明指南!创建复合组件时如何保存请求之间的状态?
Use StateHelper http://docs.oracle.com/javaee/6/api/javax/faces/component/StateHelper.html。它可以通过UIComponent#getStateHelper() http://docs.oracle.com/javaee/6/api/javax/faces/component/UIComponent.html#getStateHelper%28%29.
private enum PropertyKeys {
currentPageNumber;
}
public void setCurrentPageNumber(int currentPageNumber) {
getStateHelper().put(PropertyKeys.currentPageNumber, currentPageNumber);
}
public int getCurrentPageNumber() {
return (int) getStateHelper().eval(PropertyKeys.currentPageNumber, 0);
}
请注意,我返回的默认值是0
在吸气剂中。你可能想要改变int
to Integer
并删除默认值,以便null
将被退回。
无关对于具体问题,为了更简单,您也可以扩展UINamingContainer http://docs.oracle.com/javaee/6/api/javax/faces/component/UINamingContainer.html而不是实施NamingContainer
。这样你就可以省略被覆盖的getFamily()
方法,因为它已经正确实现了UINamingContainer
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)