使用特定于字段的反馈标签时如何避免多余的 Wicket 日志警告? [英] How to avoid superfluous Wicket log warnings when using field-specific FeedbackLabels?
问题描述
我正在使用FeedbackLabels"来显示特定于组件的验证消息,基于此博客文章中的想法和代码:,这是相关部分:
//(此代码作者为大安,StuQ.nl//它是在 Apache 2.0 许可下获得许可的.)@覆盖受保护的无效 onBeforeRender() {super.onBeforeRender();if(component.getFeedbackMessage()!=null) {if(this.text!=null) {setDefaultModel(this.text);} 别的 {setDefaultModel(新模型(component.getFeedbackMessage().getMessage()));}this.add(new AttributeModifier("class", true, new Model("feedbackLabel" + component.getFeedbackMessage().getLevelAsString()));} 别的 {setDefaultModel(新模型(""));}}
FeedbackMessage 有一个 markRendered() 函数.我会为添加到标签的每条消息添加一个调用.请参阅反馈面板的代码.
I'm using "FeedbackLabels" to show component-specific validation messages, based on ideas and code in this blog post: User friendly form validation with Wicket.
Problem is, pages using such FeedbackLabels for validation messages flood the log with superfluous warnings:
2012-05-04 10:43:32,824 ["http-bio-8080"-exec-6] WARN org.apache.wicket.protocol.http.WebSession - Component-targetted feedback message was left unrendered. This could be because you are missing a FeedbackPanel on the page. Message: [FeedbackMessage message = "Tilille on pakollinen tieto", reporter = toAccount, level = ERROR]
2012-05-04 10:43:32,824 ["http-bio-8080"-exec-6] WARN org.apache.wicket.protocol.http.WebSession - Component-targetted feedback message was left unrendered. This could be because you are missing a FeedbackPanel on the page. Message: [FeedbackMessage message = "Tililtä on pakollinen tieto", reporter = fromAccount, level = ERROR]
2012-05-04 10:43:32,824 ["http-bio-8080"-exec-6] WARN org.apache.wicket.protocol.http.WebSession - Component-targetted feedback message was left unrendered. This could be because you are missing a FeedbackPanel on the page. Message: [FeedbackMessage message = "Viitenro on pakollinen tieto", reporter = reference, level = ERROR]
2012-05-04 10:43:35,039 ["http-bio-8080"-exec-6] WARN org.apache.wicket.protocol.http.WebSession - Component-targetted feedback message was left unrendered. This could be because you are missing a FeedbackPanel on the page. Message: [FeedbackMessage message = "Tilille on pakollinen tieto", reporter = toAccount, level = ERROR]
[...]
Wicket claims that:
Component-targetted feedback message was left unrendered. This could be because you are missing a FeedbackPanel on the page.
Thing is, as you can see in the screenshot, those messages were rendered (in the FeedbackLabels accompanying each field), and I do also have a FeedbackPanel on the page (but it filters the component-targetted messages, using ComponentFeedbackMessageFilter, so that they aren't shown twice).
In any case, these log messages clearly aren't useful. How can I make Wicket shut up about this? (Without resorting to brute force methods like changing logging level to FATAL.) Should something be fixed in Daan's FeedbackLabel implementation perhaps (see below)?
Appendix: Basically FeedbackLabel (extends Label) checks if the related component has a feedback message, and if so, displays it. If you can't be bothered loading the code from the article, here's the relevant part:
// (Author of this code is Daan, StuQ.nl
// it's licenced under Apache 2.0 license.)
@Override
protected void onBeforeRender() {
super.onBeforeRender();
if(component.getFeedbackMessage()!=null) {
if(this.text!=null) {
setDefaultModel(this.text);
} else {
setDefaultModel(new Model(component.getFeedbackMessage().getMessage()));
}
this.add(new AttributeModifier("class", true, new Model("feedbackLabel " + component.getFeedbackMessage().getLevelAsString())));
} else {
setDefaultModel(new Model(""));
}
}
FeedbackMessage has a markRendered() functon. I would add a call to this for each message that whas added to a Label. Seethe code of the FeedbackPanel.
这篇关于使用特定于字段的反馈标签时如何避免多余的 Wicket 日志警告?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!