2012-05-04 6 views
3

"FeedbackLabels"を使用して、このブログ記事のアイデアとコードに基づいてコンポーネント固有の検証メッセージを表示しています:User friendly form validation with Wicketフィールド固有のFeedbackLabelsを使用するときに、不要なWicketログ警告を回避するにはどうすればよいですか?

コンポーネント標的化さフィードバックメッセージがレンダリングされていない残っていた。

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の請求:

問題は、検証メッセージのために、このようなFeedbackLabelsを使用してページが余分警告がログにあふれ、です。これは、 があなたのページにFeedbackPanelを見つけられていない可能性があります。

事は、あなたがスクリーンショットで見ることができるように、これらのメッセージが(各フィールドを伴うFeedbackLabelsに)レンダリングた、と私はもページ上FeedbackPanelを持っているん(しかし、それはコンポーネントをフィルタであり、ターゲットメッセージは、ComponentFeedbackMessageFilterを使用して、2回表示されないようにします)。いずれの場合においても

enter image description here

、これらのログメッセージは明らかに有用ではありません。 これについてWicketを閉めさせるにはどうすればいいですか?? (ログレベルをFATALに変更するなどの強引な方法に頼らずに)DaanのFeedbackLabel実装で何か修正する必要がありますか(下記参照)?


付録:基本的にFeedbackLabel(extends 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("")); 
    } 
} 
+0

ああ、違いがある場合は、Wicket 1.4を使用してください。 – Jonik

答えて

2

FeedbackMessageはmarkRendered()functonを持っています。私はラベルに追加されたそれぞれのメッセージのために、これにコールを追加します。 FeedbackPanelのコードを表示します。

+0

うまく働いた、ありがとう! (feedbackLabelのonBeforeRender()を調整して、markRendered()がcomponent.getFeedbackMessage()!= null条件の内部で呼び出されるようにします)。私はブログ投稿にコメントを追加して、元の著者や他の人々は引き続き同じFeedbackLabelコードを使用します。 – Jonik

関連する問題