ViewScoped Bean 内 SessionScope 的 ManagedProperty - 瞬态?

2024-01-08

我有这样的 JSF Beans 结构:

@ManagedBean
@ViewScoped
public class ViewBeany implements Serializable {

....
    @ManagedProperty(value='#{sessionBeany})
    transient private SessionBeany sessionBeany;
...

    public getSessionBeany() { ... };
    public setSessionBeany(SessionBeany sessionBeany) { ... };

}

原因是transient问题是会话 bean 具有一些不可序列化的成员,并且无法使其可序列化。

这行得通吗?
如果没有的话如何解决无法序列化的问题SesionBeany但必须将其保留为视图作用域 bean 下的托管属性?

Thanks!


这行不通。如果视图作用域 bean 被序列化,则所有transient字段被跳过。 JSF 不会在反序列化后重新注入托管属性,因此您最终会得到一个视图范围的 bean,而没有会话范围的 bean 属性,这只会导致 NPE。

在这个特定的构造中,最好的选择是在 getter 中引入延迟加载,并通过 getter 而不是通过直接字段访问来获取会话 bean。

private transient SessionBeany sessionBeany;

public SessionBeany getSessionBeany() { // Method can be private.
    if (sessionBeany == null) {
        FacesContext context = FacesContext.getCurrentInstance();
        sessionBeany = context.getApplication().evaluateExpressionGet(context, "#{sessionBeany}", SessionBeany.class);
    }

    return sessionBeany;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ViewScoped Bean 内 SessionScope 的 ManagedProperty - 瞬态? 的相关文章

随机推荐

  • FastAI lrfind()方法无法正常工作

    Update 1 我根据 无论坡度如何 你都希望从该点返回 10 倍 更新了我的 lr 并将其设置为 max lr 切片 1e 3 1e 2 这就是我得到的 和情节 这是什么意思 正如您在第二张图中看到的那样 从 1e 08 开始损失就非常
  • 为什么 JUnit 中不推荐使用assertEquals(double,double)?

    我想知道为什么assertEquals double double 已弃用 I used import static org junit Assert assertEquals 我使用的是 JUnit 4 11 下面是我的代码 import
  • 返回指向本地结构的指针

    我看到一些具有如下结构的代码示例 type point struct x y int func newPoint point return point 10 20 我有 C 背景 这对我来说似乎是错误 这种构造的语义是什么 新的点是分配在栈
  • 在行内插入表格

    我编写了一个包含两个表的脚本 tbl1是一个主表 tbl2是我想插入到的第二个表tbl1第二行使用纯JavaScript 它工作完美 但是我的tbl2有一些html attribute 插入后看到代码时没有看到 note tbl1 and
  • 如何用 PHP 解析 phpDoc 风格的注释块?

    请考虑以下代码 我尝试仅解析文件中的第一个 phpDoc 样式注释 不使用任何其他库 出于测试目的 将文件内容放入 data 变量中 data file A lot of info about this file Could even co
  • 为包含集合的对象实现 GetHashCode()

    考虑以下对象 class Route public int Origin get set public int Destination get set 路由实现相等运算符 class Routing public List
  • 术语“Update-Database”未被识别为 cmdlet 的名称

    我正在使用 EF5 beta1 虽然我之前能够运行 更新数据库 现在我关闭了 Visual Studio 我无法让它运行 我收到以下错误 术语 更新数据库 不被识别为 cmdlet 函数 脚本文件或可操作程序的名称 检查名称的拼写 或者如果
  • 解释 sed、grep 和 cut 语法

    我正在分析一个批处理文件 其中有一行编辑文本文件 输入 并制作 txt 文件 输出 该批处理使用三个帮助tools exe grep sed and cut 我尝试阅读他们的使用手册 但这并不容易 该行是 type input txt se
  • 带有“-std=c++0x”的“#include ”已损坏

    如果我指定 std c 0x到 g 那么我不能 include
  • CSS 性能和实现较少

    将 LESS 用于 CSS 的最佳方法是什么 基本上 开发人员应该编写一个 Less 文件 然后将其编译用于生产 我应该链接 LESS 代码和 javascript 文件吗 或者我应该完全跳过 LESS 路线并重新制作课程 我正在尝试将一些
  • 如何使用 HTML 父子关系中的 2 个 Svelte 组件将数据从子级传递到父级

    我是 Svelte 的新手 我在 HTML 父子关系中有 2 个 Svelte 组件 而不是 Svelte P C 关系 其中 1 个 Svelte 组件导入另一个组件 最终 我想要这样的东西 可能有很多 Accs
  • 如何在elasticsearch中使用Query DSL找到最近/最近的数字

    我正在寻找在弹性搜索的帮助下找到最近的价格 号码的可能性 问题是我没有范围 我想要实现的是结果按最近距离排序 根据示例搜索查询 我的索引包含 3 个文档 其价格 数字 如下 45 27 32 对于给定数字 距我的搜索值 29 的 距离 是
  • 谷歌搜索网络抓取与Python中的关键字列表

    我正在尝试通过使用名称列表作为输入并在 DataFame 中获取数据集来在 Google 搜索上进行网络抓取 我之前使用 selenium 进行网页抓取 但我在构建语法时遇到了困难使用循环运行名称列表作为输入得到结果并scrape每一页 下
  • 防止创建类型别名实例

    是否可以阻止创建类型别名的实例 例如一个ValidatedEmail type ValidatedEmail address string validatedOn Date 假设有一个函数validateEmail和一个函数sendEmai
  • 使用 SynchronizationContext 将事件发送回 WinForms 或 WPF 的 UI

    我使用 SynchronizationContext 将事件从执行大量多线程后台任务的 DLL 封送回 UI 线程 我知道单例模式不是我最喜欢的 但是当您创建 foo 的父对象时 我现在使用它来存储 UI 的 Synchronization
  • 获取存储为字符的时间变量的时间差

    我的数据框中有两个字符变量start time and stop time start time stop time
  • jQuery flot 并排多条形图

    我使用 jQuery 绘图和类别插件来创建图表 我想使用以下代码并排绘制每个月的两个条形图 plot chart label Neue Mitglieder data data order 1 label F llige K ndigung
  • 如何在eclipse中过滤消息到Logcat?

    我只想从当前运行的应用程序向 logcat 显示 system out println 消息 我已经检查了堆栈溢出和其他人的许多建议 但我得到的只是像 add adb d logcat com example example I S 等等
  • BeginProcessRequest() 中会发生什么?

    我们使用 NewRelic 来提供服务器端应用程序跟踪 我们注意到 我们的一些应用程序在该方法中始终花费大约 100 毫秒System Web Mvc MvcHandler BeginProcessRequest 这种情况发生在调用任何自定
  • ViewScoped Bean 内 SessionScope 的 ManagedProperty - 瞬态?

    我有这样的 JSF Beans 结构 ManagedBean ViewScoped public class ViewBeany implements Serializable ManagedProperty value sessionBe