1

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

未呈现针对组件的反馈消息。这可能是因为您在页面上缺少反馈面板。消息:[FeedbackMessage 消息 =“检索订阅 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>

- -编辑 - -

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

error("hello world");

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

4

2 回答 2

0

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

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

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

于 2013-10-15T16:21:27.977 回答
0

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

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

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

删除这个解决了这个问题。

于 2013-10-16T09:30:11.657 回答