扩展 UIComponentBase 时如何保存状态

2024-02-03

我正在创建一个复合组件,它将包装数据表以实现非常简单的分页。我需要在 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(使用前将#替换为@)

扩展 UIComponentBase 时如何保存状态 的相关文章

随机推荐

  • 在 Visual Studio Code 中禁用基于单词的建议

    我想要禁用基于单词的建议 在我看来这很烦人而且没用 例如 括号将提供变量 方法和语言的建议 不会污染建议列表将所有类似的单词写入文件中 我只是想要代码建议 我试过 editor wordBasedSuggestions false 但没有运
  • CUDA racecheck、共享内存数组和 cudaDeviceSynchronize()

    我最近发现了比赛检查的工具cuda内存检查 在 CUDA 5 0 中可用 cuda memcheck tool racecheck 参见英伟达文档 http docs nvidia com cuda cuda memcheck index
  • jQuery UI:将项目从一个列表移动到另一个列表

    虽然这should相对简单 我不知道如何移动 而不是复制 LI之间的元素ULs 我想要的只是从列表中拖动任何项目foo列出bar 或反之亦然 而不重复元素 While connectToSortable几乎完全符合我想要的 尽管我宁愿避免s
  • 命名空间不能直接包含成员? [复制]

    这个问题在这里已经有答案了 我有个问题 我一直在关注教程 以便我可以学习使用 Xamarin 进行编程 现在我有这个错误行 我已经在标题中写下了 这是给大家的代码 using System Collections ObjectModel u
  • 以编程方式访问函数位置

    是否可以通过代码访问 FunctionLocation 使用控制台登录功能时谷歌浏览器开发人员工具显示的属性 目前的答案是no The FunctionLocation 您在 Inspector 中看到的属性已添加到V8Debugger i
  • 无法绑定到“ngModel”,因为它不是“ion-select”的已知属性

    大家好 当我在产品版本中编译我的应用程序时 出现错误 无法绑定到 ngModel 因为它不是 ion select 的已知属性 My code
  • 对 SharePoint 列表的 CAML 查询返回整个集合

    我遇到了一个问题 如果我在 C 中执行 CAML 查询 我的 ListItemCollection 将包含整个列表 这是一个片段 我擦洗过的代码也许你可以看到我做错了什么 在调试时 我发现生成的 XML 正是我所期望的从文件读取的值 似乎有
  • 在函数中包含库调用?

    将执行该函数所需的每个库包含在该函数中是一个好习惯吗 例如我的文件global r包含我需要一个闪亮的应用程序的几个功能 目前我在文件顶部有所有需要的包 当我切换项目 复制这些函数时 我必须加载包 将它们包含在新代码中 否则 所有需要的包都
  • extjs 5网格的滚动条在边框布局面板中不起作用

    在边框布局面板中 即使网格存储足够长 导致网格溢出 网格的滚动条也无法正常工作 如果我的网格位于无边框布局面板中 则滚动条是可以的 但是当我将网格放入边框布局面板中时 要么没有滚动条 要么有无效的滚动条 what i want is to
  • 在 VS 中发布网站时@import“theme.css”不起作用

    我有一个网站 它依赖于 jquery ui theme css 的一些 css 样式 当我在本地运行我的项目时 这工作正常 但是当我发布和部署时 这些特定的样式不会被选择 例如 当我在本地检查对话框关闭按钮时 它会显示标准的十字图像 但在发
  • sql server:必要时在外键上创建索引

    我有很多带有外键的表 有些有索引 而另一些则没有 所有外键均已命名FK
  • th:复选框中字段属性的值

    我有一个包含数据库数据的表 动态插入 在一列中我插入复选框 现在我想选择其中一个并发送到下一个表单 我选择一个产品并将属性发送到另一个表单 在此表单中应仅显示所选产品的属性 但我不知道 th field 中插入什么样的值 我尝试了很多解决方
  • 安排连续气流 DAG 运行

    有没有办法循环运行气流 DAG 当尝试创建一个循环 将最后一个组件连接到最后一个组件的上游 时 我收到 在 DAG 中检测到循环 错误任务 一般来说 我有一个简短的 3 个 BashOperator 组件流程 我想连续运行它们 从最后一个组
  • 类型错误:jQuery.browser 未定义

    我正在使用 jquery mobile 1 4 2 和脚本 1 11 0 我已经阅读过之前提出的有关此问题的问题 但我不知道如何在我的代码中使用 这是我的代码 script jQuery input name cat bind jQuery
  • ActionBar Compat 的自定义(渐变)背景

    我正在使用 Action Bar Compat 以便我的带有导航抽屉的操作栏向后兼容至 API 级别 9 并且我想更改操作栏的背景 我复制了代码安卓开发者 https developer android com training basic
  • 如何在 ruby​​ on Rails 中通过 websocket 发送保活数据包

    我想发送一个 与客户保持联系 我的 websocket 连接每 30 秒发送一条消息 我的 websocket 初始化程序中的代码如下所示 ws WebSocket Client Simple connect wss bitcoin tos
  • 使用 C++ 的 STL 进行 i 阶统计

    给定一个空数组 我需要进行两种类型的查询 向数组中插入一个元素 查找某个元素的索引k 显然数组必须保持排序 这可以通过使用来完成set容器 set
  • ionic cordova 构建 android --prod 时出错

    致命错误 CALL AND RETRY LAST 分配失败 JavaScript 堆内存不足 运行命令时出错 ionic cordova 构建 android prod Note that 离子构建安卓 离子运行安卓 and 离子服务一切正
  • 在一行中缓存一个中间变量

    我可以以某种方式缓存i toString在这个简单的函数定义中 def palindrome i Int i toString i toString reverse 我想让这个函数保持简单 没有经典的多行 大括号括起来的函数 你可以这样做
  • 扩展 UIComponentBase 时如何保存状态

    我正在创建一个复合组件 它将包装数据表以实现非常简单的分页 我需要在 ajax 请求之间保存状态 当前页码 我尝试在 FacesComponent 中创建字段 但发现它们在 JSF 生命周期中被删除 FacesComponent value