Seaside 中嵌套#call: 的数量是否有限制?

Is there a limit to the number of nested #call:'s in Seaside?

我正在开发一个 Seaside 应用程序,我怀疑我已经到了无法再 #call: 另一个组件的地步。 这不是我的 WAComponents 的问题,因为我尝试了其他以 #call: 结尾的消息,例如 #confirm:.

我的应用程序中有 4 个嵌套的 #call:(我知道,我知道......但我不是在寻找设计建议,只是在寻找答案:))。 5号只是重新加载页面,调用的组件一直没有出现。

我查了下文档,没有关于这个的,调试对我来说真的很困难,因为我不熟悉Seaside的内部代码。

这是 Pharo 6.1 下的 Seaside 3.2。

谢谢!

嵌套的 #call: 没有限制,正如 Johan 的评论中正确指出的那样。

在这种特殊情况下,#call: 的 "null" 行为(即只是重新加载页面)是由于父 [=] 的 #children 方法中的一个错误13=]。这里发生的事情是:

  • 组件 A #render: 编辑了组件 B,但组件 A#children: 有问题
  • 组件B想要#call:组件C
  • #call: 没用,只是重新加载了页面

正如 Seaside documentation 所述,每个呈现另一个 WAComponent WAComponent 必须 重新定义 #children子组件。很容易忘记执行此操作,因为大多数时候它不会成为阻碍。直到你发现自己陷入这种情况。