这是一个普遍的问题。您需要执行的是强制会话序列化。这可以通过执行以下操作来完成:
- 创建一个阶段监听器
- 在每个阶段结束时,将一个随机属性存储到会话图上
- 例如sessionMap.put(“ CURRENT_TIME”,System.currentTimeMillis())
- 这将导致修改后的数据被序列化到数据存储中
之所以需要执行这样的操作,是因为在构造视图树时,它被添加到了会话中……然后您的业务逻辑对视图树中的组件进行了更改,但是不幸的是,对这些视图所做的更改变量不会引发任何通知GAE重新序列化的事件。这就是为什么您会看到ViewExpiredExceptions或未存储数据等的原因。
该概念本质上与其他视图技术可能遇到的 markDirty() 概念相似。



