3

フィードバック メッセージを表示するときに Java コードのフィールド名の代わりに国際化されたフィールド名が表示されるように、フォーム コンポーネントの国際化されたラベルを正しく作成するにはどうすればよいですか?

私はこれを読みました:

https://cwiki.apache.org/WICKET/everything-about-wicket-internationalization.html

wicket の xhtml タグのドキュメント:

https://cwiki.apache.org/WICKET/wickets-xhtml-tags.html

<label wicket:for="name">
     <wicket:label>
         <wicket:message key="label.name"/>
     </wicket:label>
</label>
<input wicket:id="name" type="text" wicket:message="placeholder:label.name" />

これにより、次のエラーが発生します。

Last cause: Expected close tag for '<wicket:label>' Possible attempt to embed 
component(s) '<wicket:message key="label.name"/>' in the body of this 
component which discards its body

wicket:messageを任意のテキストに置き換えると、関連するフィードバック メッセージにそのテキストが表示されます。

(関連する jira の問題があります: https://issues.apache.org/jira/browse/WICKET-3903ですが、これを修正するために何が行われ、何をしなければならないかはまだわかりません ...)

Javaでこれを行う方法があることがわかりました:

add(new TextField<String>("name").setRequired(true).setLabel(new Model<String>(getString("label.name"))));

どうにかしてこれをより快適な方法で行うことは可能ですか?

4

5 に答える 5

4

私はちょうど以下をテストしました:

<form wicket:id="form">
        <label for="input"><wicket:message key="input">some input</wicket:message></label>
        <input wicket:id="input" type="text" name="input">
        <input type="submit" value="submit">
 </form>

そして、Javaクラスでは:

Form<HomePage> form = new Form<HomePage>("form"
                              , new CompoundPropertyModel<HomePage>(this));
    wmc.add(form);

    TextField textField = new TextField("input");
    textField.setRequired(true);
    form.add(textField);

私が提供したプロパティファイル:

input=SomeInputField

これにより、次の画面が表示されます(必要なフィールドを空のままにして、送信を押した場合。

ここに画像の説明を入力してください

これはあなたが探しているものですか?

于 2012-07-09T11:24:46.490 に答える
3

もう 1 つの方法は<wicket:label/>、次のように の key 属性を使用することです。

<label wicket:for="name">
   <wicket:label key="label.name">Placeholder label</wicket:label> 
</label>
<input wicket:id="name" type="text"/>

残念ながら、この属性は wicket の xhtml タグを説明している wiki ページには記載されていません。サポートされているすべての属性は、タグ ( org.apache.wicket.markup.html.form.AutoLabelTextResolver) を処理するクラスで JavaDoc を使用して文書化されています。

この代替手段の利点は、追加のコーディングが必要ないことです。

于 2013-05-29T14:16:58.760 に答える