【问题标题】:Wicket replacing panel with ajax fails with MarkupNotFoundException使用 ajax 替换面板的 Wicket 失败并出现 MarkupNotFoundException
【发布时间】:2013-11-11 22:40:05
【问题描述】:

页面标记有

<div wicket:id="stepPanel" />

在其中添加标签,当页面首次加载时效果很好,那就是

add(new MyFirstPanel("stepPanel"));

工作正常。但是当我触发一个 Ajax 事件并请求重绘时

addOrReplace(new MySecondPanel("stepPanel"));
target.add(MyPage.this);

我收到以下错误

Last cause: Failed to find markup file associated. MyFirstPanel: [MyFirstPanel [Component id = stepPanel]]

请注意,它会尝试查找错误的标记(应为 MySecondPanel 查找标记)并且无论之前是否成功,它都会失败!

我使用反射来实例化面板,但这可能是个问题吗?没有抛出异常。

回答者: 实际上它是另外一回事 - 我注意到我的一个 AjaxSubmitLink 引用了一个不再放置在标记中的表单......所以无论你做什么,只要记住不要留下那个引用。

【问题讨论】:

    标签: ajax wicket


    【解决方案1】:

    您在更换面板后添加了 MyPage,导致 MyPage 重新呈现。 关于如何更换面板here 有一个很好的例子。

    【讨论】:

      【解决方案2】:

      是的,您可以通过反射调用面板。我不清楚您在此处尝试对事件做什么,但如果您愿意,可以将面板附加到 AjaxSelfUpdatingTimerBehavior 并定义将在给定时间段内更新此组件的持续时间。

      希望它有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-31
        • 1970-01-01
        相关资源
        最近更新 更多