[英]Create Wicket component embedding a Textfield and its FeedbackPanel
[英]Wicket: “Component-targetted feedback message was left unrendered” even though the FeedbackPanel is on the page
我正在使用Apache wicket 1.4.22。 我遇到一个错误,表明我的页面缺少反馈面板。 但是,我添加了它-为什么反馈没有显示?
以组件为目标的反馈消息未呈现。 这可能是因为您在页面上缺少一个FeedbackPanel。 消息:[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>
- -编辑 - -
一些更多的调试:如果将以下行放入AbstractCCPage构造函数中,它将起作用:
error("hello world");
但是,如果我在SubDetailPage构造函数中放入同一行,则不会-即使同时调用了两个构造函数。
该问题可能是由重定向到您的页面引起的:
Wicket重定向到您的页面实例,而没有实际呈现页面,但是已经添加了反馈消息。
尝试将对#error()的调用移至#onBeforeRender()。
我发现了问题。 就在AbstractCCPage的末尾,我输入了以下内容:
add(new PageView("componentTree", this));
这是为了在调试级别添加页面结构的细分,以便我们可以看到页面上的树。
删除此问题已解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.