我正在使用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构造函数中放置相同的行,它就不会 - 即使两个构造函数都被调用。
答案 0 :(得分:0)
问题可能是由重定向到您的网页引起的:
Wicket重定向到您的页面实例而不实际呈现页面,但已添加反馈消息。
尝试将#error()的调用移至#onBeforeRender()。
答案 1 :(得分:0)
我发现了问题。就在AbstractCCPage的末尾,我有以下条目:
add(new PageView("componentTree", this));
这是为了在调试级别添加页面结构细分,以便我们可以在页面上看到树。
删除此功能解决了问题。