我有一个JSF和Spring集成的应用程序。我的帐户支持Bean类是具有范围会话的,它是可序列化的[如这里所建议的]。在我的web.xml javax.faces。STATE_SAVING_METHOD的值为"server"。这里一切都还好。
[我有支持bean,服务类和DAO类的层]
当我改变javax.faces的值时。STATE_SAVING_METHOD向` client `抛出异常` java.io。NotSerializableException '指向我的服务类。如果我将服务类设置为Serializable,那么' java.io. js。NotSerializableException指向我的DAO类。如果我将DAO类设置为可序列化的,则应用程序将正常工作。
然而,我认为使服务类和DAO类可序列化并不是一个好方法。
征求专家意见
您应该在您的帐户支持bean中将您的服务标记为瞬态。这可以防止序列化。
的例子:
@RequestScoped
public class AccountBackingBean {
@EJB
private transient MyService myService;
private String someValue;
}
参见:
- 关键字"transient"在Java中是什么意思?[关闭]
- JSF 2.0中的STATE_SAVING_METHOD参数是什么为什么JSF在服务器上保存UI组件的状态?