扩展 UIComponentBase 时如何保存状态
我正在创建一个复合组件,它将包装数据表以实现非常简单的分页。我需要在 ajax 请求之间保存状态(当前页码)。
我尝试在 FacesComponent 中创建字段,但我发现它们在 JSF 生命周期中被删除:
@FacesComponent(value = "bfTableComponent")
public class BFTableComponent extends UIComponentBase implements NamingContainer {
private int currentPageNumber;
...
我似乎无法在任何地方找到执行此操作的简明指南!创建复合组件时如何保存请求之间的状态?
I'm creating a composite component that will wrap a datatable to implement very simple paging. I need to save state (the current page number) between ajax requests.
I tried creating fields in my FacesComponent, but I discovered they are wiped out during the JSF lifecycle:
@FacesComponent(value = "bfTableComponent")
public class BFTableComponent extends UIComponentBase implements NamingContainer {
private int currentPageNumber;
...
I can't seems to find a concise guide to doing this anywhere! How would one save state between requests when creating a composite component?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用
StateHelper
。它可以通过UIComponent#getStateHelper()< 获得/代码>
。
请注意,我在 getter 中返回默认值
0
。您可能希望将int
更改为Integer
并删除默认值,以便返回null
。与具体问题无关,为了更简单,您也可以扩展
UINamingContainer
而不是实现NamingContainer
。这样您就可以省略重写的getFamily()
方法,因为它已由UINamingContainer
正确实现。Use
StateHelper
. It's available byUIComponent#getStateHelper()
.Note that I'm returning a default value of
0
in the getter. You might want to changeint
toInteger
and remove the default value so thatnull
will be returned.Unrelated to the concrete problem, you can for more simplicity also just extend
UINamingContainer
instead of implementingNamingContainer
. This way you can omit the overriddengetFamily()
method as it's already implemented rightly byUINamingContainer
.