当前位置: 首页 > 面试题库 >

扩展UIComponentBase时如何保存状态

诸腾
2023-03-14
问题内容

我正在创建一个复合组件,该组件将包装数据表以实现非常简单的分页。我需要在ajax请求之间保存状态(当前页码)。

我尝试在FacesComponent中创建字段,但是发现它们在JSF生命周期中被清除了:

@FacesComponent(value = "bfTableComponent")
public class BFTableComponent extends UIComponentBase implements NamingContainer {

    private int currentPageNumber;
    ...

我似乎找不到在任何地方进行此操作的简明指南!创建复合组件时,如何在请求之间保存状态?


问题答案:

使用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);
}

请注意,我将0在getter中返回默认值。您可能想要更改intInteger并删除默认值,以便null将其返回。

具体问题 无关
,您可以为了更简单起见也可以扩展UINamingContainer而不是实现NamingContainer。这样,您可以忽略覆盖的getFamily()方法,因为该方法已经由正确地实现了UINamingContainer



 类似资料:
  • 问题内容: 我试图了解Docker的来龙去脉,但我对保存映像的前景感到困惑。 我运行了基本的Ubuntu映像,安装了Anaconda Python和其他一些东西…那么,保存进度的最佳方法是什么?保存,提交,导出? 这些似乎都无法与VirtualBox一样工作,后者为您的虚拟机提供了一个明显的保存状态文件。 问题答案: 通常的方法至少是通过:将容器的状态冻结为新映像。 注:由于评论由anchovyl

  • 扩展说明 检查服务依赖各种资源的状态,此状态检查可同时用于 telnet 的 status 命令和 hosting 的 status 页面。 扩展接口 org.apache.dubbo.common.status.StatusChecker 扩展配置 <dubbo:protocol status="xxx,yyy" /> <!-- 缺省值设置,当<dubbo:protocol>没有配置status

  • 我有4个按钮来替换活动中的片段[片段A,片段B,片段C,片段D],然后我将片段A替换为活动,然后我将片段A中的值更改为片段A,之后我将片段B替换为片段A,并将片段C替换为片段B.但是我想把片段A替换成片段C。如何在片段A中保存状态。 当我提交片段时编写代码 要替换的图表 片段A ------- 片段B ------- 片段C ------- PS.我不想使用返回按钮返回片段A,我想替换片段A并在第

  • 问题内容: 我正在尝试扩展Python,以用于越野比赛的结果。我想从格式为string的对象构造一个对象。我可以使用工厂设计模式和注释来完成此操作。我将如何通过覆盖和/或完成相同的任务? 使用下面的代码,构造一个对象会引发TypeError。请注意,未调用,因为未打印。 这是错误: 如果将代码从移至,则会得到以下结果。注意这次,输出显示我的函数被调用了。 问题答案: 显然,对象是不可变的,这意味着

  • 问题内容: 我们正在使用SQL Server 2008,其中一项要求是在为系统定义的实体上具有可扩展的用户定义属性。例如,我们可能有一个名为Doctor的实体,我们希望系统管理员能够定义通常不在系统中的其他属性。这些属性很可能是链接父表或联接表的查询条件所必需的。 将有定义属性(名称,描述,类型)等的表,但是我的问题是实际数据值的存储。 我不是DBA(只是一个假装成程序员的DBA),但我首先想到的

  • 扩展说明 用请求参数作为 key,缓存返回结果。 扩展接口 org.apache.dubbo.cache.CacheFactory 扩展配置 <dubbo:service cache="lru" /> <!-- 方法级缓存 --> <dubbo:service><dubbo:method cache="lru" /></dubbo:service> <!-- 缺省值设置,当<dubbo:serv