【问题标题】:xpages partial refresh can't save after replicate local replica复制本地副本后xpages部分刷新无法保存
【发布时间】:2013-10-01 11:33:23
【问题描述】:

场景:

  1. 用于在网络浏览器中编辑的用户预览 xpage。
  2. 开发人员将本地副本复制到服务器。
  3. 用户单击保存按钮并触发保存操作部分/完全刷新

在 8.5.2 中由于找不到 java 设计类而导致整个数据库崩溃。在 8.5.3 中没有产生错误 CS/SS,但没有应用到文档的更改。好像如果您复制 sessionID 会被覆盖。有没有办法修复/检测它?

有什么想法吗?

谢谢

【问题讨论】:

  • 我会首先考虑将更改复制到生产环境的频率和时间。如果您在用户使用应用程序时更改应用程序的设计,总会出现问题。

标签: xpages replicate


【解决方案1】:

与此效果有关:Meaning of java.lang.ClassCastException: someClass incompatible with someClass

简单地说,每次设计更改都会重置 XSP 引擎。从 8.5.3 开始,您可以通过 XPage 属性中的属性“Refresh entire application when design changes”来控制它 - 将其关闭(自该版本以来的默认设置)只会“软重置”XSP 引擎。

无论如何,您可能会丢失一些作用域变量和 bean。这总结了一些要遵守的规则:

  • 不允许开发人员在工作时间更改生产中的设计。
  • 通知用户该问题(onError 事件用于部分刷新) - Tim 的评论解释说,很遗憾,在设计更改后您不会因部分刷新而收到错误。简单的 CSJS 代码 ping 应用程序可用性并在应用程序没有响应时报告问题可以工作,但我不建议这样做:我们使用 ExtLib 中的“保持活动”控件,并且 domlog.nsf 中的故障排除成为一场噩梦 - 它充满了 ping (几乎一直 - 许多用户让他们的浏览器在一夜之间打开)。

  • 如果数据很重要,实现类似于谷歌应用的自动保存机制。

顺便说一句:此效果类似于超时会话 - 部分刷新将失败,用户需要重新加载页面(可能还有松散的编辑)。

【讨论】:

  • Frantisek,感谢您的回复,但 xsp.application.forcefullrefresh 不能解决问题,并且 onError 不会产生任何错误。如果我能检测到它,我当然会实现一个自动保存机制。还有其他建议吗?
  • Frantisek 上面的第一个要点是关键:不要在用户处于活动状态时部署更改。这样做会将他们正在使用的应用程序替换为不同的应用程序——一个类似的应用程序,但仍然是一个不同的应用程序。因此,部分刷新事件要求不再存在的应用程序做出响应。上面列出的设置可以最大限度地减少影响,但不能消除它。所以不要从你的用户下面替换应用程序。建立并遵循变更管理流程,提前通知用户即将发生的变更,并在影响最小的时候实施。
猜你喜欢
  • 1970-01-01
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-12
相关资源
最近更新 更多