在我的基于 JSF 2 的应用程序中,我有一个包含(在其他 UI 组件中)一些复选框的表单。
在复选框上,我注册了 ajax 请求,它们在被选中时触发。ajax 请求实际上只会更新支持 bean 中另一个复选框的值。结果,另一个复选框也将被选中(当它重新渲染时 - 因为它将在渲染响应阶段从支持 bean 获取更新的值)。
在整个表单被提交并发生验证错误之前,这可以正常工作。然后,ajax 请求仍然有效并更改支持 bean 上的值,但在重新呈现更新后的复选框的阶段,它的值不是从支持 bean 中获取,而是来自从ComponentStateHelper
类中获取的缓存值。
据我了解,这用于 JSF 2 的新功能,仅存储对组件树的部分更改。
我不明白的是:这与验证阶段有什么关系?StateHelper
当验证发现错误时,为什么我的复选框的类中有缓存值?