【问题标题】:$m->comp is returning infinite recursive call error$m->comp 返回无限递归调用错误
【发布时间】:2012-04-02 07:59:21
【问题描述】:

我在使用 HTML::Mason 的 $m->comp 从一个视图重定向到另一个视图时遇到问题。

有一个文件说file1.mi在这个file1.mi中嵌入了HTML代码我正在使用$m->comp重定向到file2.mi

但在网页中,每当加载 file1.mi 时,它会多次打印页脚,并且在日志中我收到错误

检测到嵌套页面框架应用程序调度,此用法不是 完全支持,可能会导致意外行为

错误:应用程序上下文错误(渲染):组件深度为 32 级 栈(无限递归调用?)

。这是我用来从file1.mi重定向的脚本

return $m->comp('/page-framework/dispatch.mi', applicationPath =>'/gp/tradein/omc', viewID => 'file2.mi', %ARGS);

我在file1.mi 中使用此脚本,然后再渲染网页——即在执行任何 HTML 脚本之前。

我对 Mason 有点陌生,如果您对此有任何疑问,请继续。

【问题讨论】:

  • 稍微更正一下,假设 file2.mi 的 viewID 是“file2”。
  • 我认为我们需要查看更多代码才能为您提供合适的答案。特别是,上面return 的上下文和dispatch.mi 的某些部分似乎在这里会有所帮助。
  • 您可能不想在此处发布专有代码。顺便说一句,人们很容易找出拥有 /gp/tradein/omc/* 的团队

标签: html perl mason


【解决方案1】:

看起来你的 file1.mi 被加载和渲染,然后 file2.mi 被执行并无限循环。

请向我们展示更多代码,无法通过这些小细节进行调试。

您在 Web 服务器日志中记录了什么?请也从日志中粘贴一些示例。

问候,

【讨论】:

  • 我认为 file2.mi 从未执行过,因为我在 file2.mi 的开头提出了 FLLogError 但它没有执行。此外 file1.mi 没有渲染。它只是多次显示模板的标题。除了那些会话详细信息之外,日志文件中没有太多内容。
【解决方案2】:

应该是您的调度员dispatch.mi 正在调用file1 或file2。在请求已经发送后决定你想去其他地方似乎逻辑是在错误的地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    相关资源
    最近更新 更多