gpt4 book ai didi

jsf-2 - JSF 2.0 中的 STATE_SAVING_METHOD 参数是什么

转载 作者:行者123 更新时间:2023-11-30 23:46:11 25 4
gpt4 key购买 nike

我无法理解 web.xml 中这一行的功能是什么

<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>

我读过 NetBeans 默认是客户端。我刚刚遇到一个问题,我的应用程序中有很多 bean,而 <param-value>被设置为客户端,所以我得到

java.io.NotSerializableException



错误,尽管我的 bean 是可序列化的(即它们实现了可序列化接口(interface)。)。我的 bean 在@ViewScope 中。但是当我将其更改为服务器时,一切正常。为什么?我使用客户端和服务器时有什么区别。任何人都可以在一个例子的帮助下解释我。

谢谢

最佳答案

java.io.NotSerializableException


这种异常通常在根本原因中有一条消息,显示未实现的类的完全限定类名 Serializable .您应该密切关注此消息以了解它在谈论哪个类,然后让它实现 Serializable因此。

通常,仅使您的托管 bean 类可序列化并不总是足够的。您还需要确保 它的每个属性也是可序列化的。大多数标准类型,如 String , Long等已全部实现 Serializable .但是(自定义)复杂类型,例如嵌套 bean、实体或 EJB,也都应该是可序列化的。如果某些东西不能真正实现为 Serializable ,如 InputStream ,那么您应该重新设计模型或使其成为 transient (请记住,反序列化后它将是 null)。

What is the difference when i use client and server



首先是一些背景信息: Why JSF saves the state of UI components on server?

主要的技术区别在于 client设置将整个 View 状态存储为 javax.faces.ViewState 的值生成的 HTML 输出中隐藏的输入字段和 server设置将其与唯一 ID 一起存储在 session 中,该 ID 又被引用为 javax.faces.ViewState 的值隐藏的输入字段。

因此,设置为 client增加网络带宽使用但减少服务器内存使用并设置为 server反之亦然。设置为 client然而,还有一个额外的功能优势:它可以防止 ViewExpiredException s 当 session 过期或客户端打开太多 View 时。

关于jsf-2 - JSF 2.0 中的 STATE_SAVING_METHOD 参数是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8471551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com