java - 使用特定于字段的反馈标签时如何避免多余的 Wicket 日志警告?

标签 java validation wicket feedbackpanel

我正在使用“FeedbackLabels”来显示特定于组件的验证消息,基于这篇博文中的想法和代码:User friendly form validation with Wicket .

问题是,使用此类 FeedbackLabels 验证消息的页面会用多余的警告淹没日志:

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 声称:

Component-targetted feedback message was left unrendered. This could be because you are missing a FeedbackPanel on the page.

事情是,正如您在屏幕截图中看到的那样,这些消息呈现(在每个字段附带的 FeedbackLabels 中),我也有一个 FeedbackPanel页面(但它使用 ComponentFeedbackMessageFilter 过滤组件目标消息,因此它们不会显示两次)。

enter image description here

无论如何,这些日志消息显然没有用。 我怎样才能让 Wicket 闭嘴? (无需诉诸蛮力方法,例如将日志记录级别更改为 FATAL。)是否应该在 Daan 的 FeedbackLabel 实现中修复某些内容(见下文)?


附录:基本上FeedbackLabel(扩展Label)检查相关组件是否有反馈消息,如果有,则显示它。如果您不想从 article 加载代码,这里是相关部分:

// (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 有一个 markRendered() 函数。我会为添加到标签的每条消息添加对此的调用。请参阅反馈面板的代码。

关于java - 使用特定于字段的反馈标签时如何避免多余的 Wicket 日志警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10445703/

相关文章:

java - 您如何维护 wicket 中面板的样式信息?

在 Wicket 中记录用户操作

java - 如何从 Android Wear 读取心率

Java Swing - 在运行时动态切换语言环境

javascript - 设计 Javascript 验证方法

php - 如果以空白形式提交,如何使表单根本不执行任何操作?

java - Wicket 面板需要刷新页面才能使 javascript 脚本正常工作

java - 同步两个循环的 Java 线程

Java Lanterna - 无法读取用户输入

javascript - 如何验证 ssl 没有通过浏览器中的代理等拦截?