微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JSF中会话中的序列化状态正在使用ViewScoped Bean

如何解决JSF中会话中的序列化状态正在使用ViewScoped Bean

由于上下文非常复杂,我将尝试简化这个问题。 我们有一个ViewScoped托管bean,它具有一个Fields列表,这些字段具有一个值,一个id和一个类型(除其他外)。我们使用该类型来呈现不同的jsf组件(即输入文本,选择,富文本等)

在将状态保存到会话之前,我们通常使用c:forEach遍历字段列表,并且效果很好。但是在会话中启用保存状态后,一些“奇怪”行为开始发生。

提交表单后,将调用该字段的设置器,但在调用actionListener时,该字段为空。我添加了调试信息,并且看到序列化和反序列化将字段对象复制到某个地方。

我认为,这必须与以下事实有关:JSTL标签是在视图构建时执行的,而组件是在渲染阶段构建的,但我完全不了解。

因此,我尝试将c:forEach更改为ui:repeat,“奇怪”的行为消失了,但是又出现了另一个问题。我需要根据字段的ID动态设置ID,但是id属性是在视图构建期间评估的,所以现在我没有基于字段的属性的ID。

在这里想念什么吗?是构建自定义jsf组件的唯一解决方案吗?

PD:对不起的说明,很抱歉,如果您需要任何其他信息或解释,我会很乐意更新此问题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。