2011-06-23 22 views
2

私は独自のウィケット(1.5.x)を持っています。私のデータベースの辞書テーブルからデータを取り出すアプリケーション起動時に読み込まれるカスタムStringローダー。データベースからのバリデータメッセージからのカスタムウィッケット

デフォルトの文字列ローダーが読み込まれていてもこのローダーを使用すると、検証テキストにusername/passwordのような$ {component}ラベルは表示されません。フィールド名が空のままのフィールドが必要です。どうすればこの問題を解決できますか?私は1 solution.Hereを試してみました

は私のコードです:

1)私は自分のアプリケーションクラスでは、このようなローダー私の文字列ローダを持っている:ここ

getResourceSettings().getStringResourceLoaders().add(0, 
      new ClassStringResourceLoader(MyApplication.class)); 

    getResourceSettings().getStringResourceLoaders() 
     .add(1, new DictionaryLoader((IDicitureService) 
     applicationContext.getBean(IDicitureService.class))); 

DictionaryLoaderIStringResourceLoaderだけの実装です。

2)は私のログインフォームでは、私はこのように私のユーザー名とパスワードのフィールドを追加しました:

は、今、私がチェックした場合など

new StringResourceModel("COMP:1:0", this, null)だけで、ユーザー名などの文字列を返す
final FeedbackPanel feedback = new FeedbackPanel("feedback"); 
    feedback.setOutputMarkupId(true); 
    form.add(feedback); 
    form.add(new FormComponentFeedbackBorder("username_border") 
      .add(new RequiredTextField("username",String.class) 
        .setLabel(new StringResourceModel("COMP:0:0", this, null)))); 
    form.add(new FormComponentFeedbackBorder("password_border"). 
      add(new PasswordTextField("password") 
        .setLabel(new StringResourceModel("COMP:1:0", this, null)))); 
    add(form); 

...パスワード私のページでは、実際にバリデーターラベル用のTextField.setLabel()を使用すると、バリデーターのコンテンツを指定されたテキストに置き換えます。しかし、ここでは$ {label}を使用していません。

これは良い方法ですか?それ以外の方法で行うこともできます。

ありがとうございました。

答えて

0

'COMP:0:0'と 'COMP:1:0'メッセージキーの値を転記できますか?ウィケットは、デフォルトではないよう

あなたは同じ構文を使用する必要があります。

Required=Field '${label}' is required. 

$ {ラベル}のいずれかで実際のラベル(あなたは1を設定している場合)またはフィールドID(ラベルを設定しなかった場合)。

関連する問題