Wicket:“组件目标反馈消息未被删除”,即使FeedbackPanel在页面上

时间:2013-10-15 12:11:11

标签: java wicket

我正在使用apache wicket 1.4.22。我有一个错误,表示我的页面中缺少反馈面板。但是,我添加了它 - 为什么反馈没有显示?

  

组件目标反馈消息未被撤消。这可能是因为您在页面上缺少FeedbackPanel。消息:[FeedbackMessage message =“检索订阅2971的交易有问题”,记者= 4,等级=错误]

以下是页面构造函数的摘录:

public class SubDetailPage extends AbstractCCPage {

public SubDetailPage(final CCSubscription sub) {

    if(sub.getTransactions()==null || sub.getTransactions().isEmpty())  
        error("Problem retrieving transactions for subscription "+sub.getSubscriptionId());

这是超级班:

public abstract class AbstractCCPage extends WebPage {

protected final FeedbackPanel feedbackPanel;

public AbstractCCPage() {

    feedbackPanel = new FeedbackPanel("info-panel");
    feedbackPanel.setOutputMarkupId(true);
    add(feedbackPanel);

之前我使用过反馈面板。他们工作正常。我在这做错了什么?我只是看不到它。

一些调试显示反馈消息已添加到列表中:

Session.get().getFeedbackMessages();

显示该消息在那里。

呈现的页面确实有一个(空的)信息面板:

<div id="info_panel45" class="info-panel"> </div>

--- ----编辑

更多调试:如果我在AbstractCCPage构造函数中放入以下行,它可以工作:

error("hello world");

但如果我在SubDetailPage构造函数中放置相同的行,它就不会 - 即使两个构造函数都被调用。

2 个答案:

答案 0 :(得分:0)

问题可能是由重定向到您的网页引起的:

Wicket重定向到您的页面实例而不实际呈现页面,但已添加反馈消息。

尝试将#error()的调用移至#onBeforeRender()。

答案 1 :(得分:0)

我发现了问题。就在AbstractCCPage的末尾,我有以下条目:

add(new PageView("componentTree", this));

这是为了在调试级别添加页面结构细分,以便我们可以在页面上看到树。

删除此功能解决了问题。