vij*_*mar 5 jsf jsf-2 view-scope notserializableexception
如果我@ViewScoped
在JSF中使用,则会发生以下异常:
java.io.NotSerializableException: com.solv.basics.Basics
java.io.ObjectOutputStream.writeObject0(Unknown Source)
java.io.ObjectOutputStream.writeObject(Unknown Source)
java.util.HashMap.writeObject(Unknown Source)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
java.io.ObjectOutputStream.writeSerialData(Unknown Source)
java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
我可以通过让bean实现来解决它Serializable
.但是,我不理解这个推理.为什么仅对视图范围而不是其他范围发生此异常?
您没有从web.xml提供设置,但如果javax.faces.STATE_SAVING_METHOD
设置为client
,则视图始终被序列化,因此NotSerializableException
将始终发生.
您应始终使您的JSF bean可序列化,因为应用程序服务器可能希望序列化会话,因此所有会话范围和视图范围的bean,即使状态保存设置为server
.
但是,如果服务器没有序列化您的会话,您将不会在会话作用域bean上获得该错误.但是如果view在客户端上被序列化,则意味着所有视图范围的bean都被序列化为字符串,该字符串作为隐藏字段发送,包含所有请求,并且JSF引擎检测到您的bean不可序列化.
NotSerializableException
仅在服务器尝试实际序列化您的bean时才会发生!
归档时间: |
|
查看次数: |
4504 次 |
最近记录: |