私はユーザーの言語を選択するためのコンボボックス/ドロップダウンのフォームを持っています。ユーザーが言語を変更した場合は、すべてのラベルを更新したいが、入力要素はそのままにしておきたい。Wicket:既存の入力を失うことなく現在のフォームを再レンダリングするにはどうすればよいですか?
jQueryのでは、私は、ラベルIDとJSONを介した新しいテキストのリストを要求してから、このようなループを使用したい:
var texts = {[ {id:'nameLabel', text:'First Name'}, {id:'familyLabel', text:'Family Name'} ]};
for(var i=0; i<texts.length; i++) {
var item = texts[i];
$('#'+item.id).text(item.text);
}
他に何も変更せずに、すべてのラベルを更新します。どのように私はWicketでこれを行うのですか?
私が試した何[EDIT]:
DropDownChoice<Locale> ddc = new DropDownChoice<Locale>(...);
ddc.add(new AjaxFormComponentUpdatingBehavior("onchange") {
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
getSession().setLocale(language);
for(MarkupContainer label : labels) {
target.addComponent(label);
}
}
});
これは、ラベルを変更したが、それはまた再びすべての入力フィールドをレンダリングします。入力フィールドの現在の値にアクセスする方法が見つかりませんでした。
[EDIT2]ラベルのリストは、それほどのように作成されます。
StringResourceModel usernameLabel = new StringResourceModel("usernameLabel", this, new Model<ValueMap>(map));
labels.add(add(new Label("usernameLabel", usernameLabel)));
: '(MarkupContainerラベル:ラベル)のために'何のラベルで、どのようにそれを得るのですか? –
ラベルは、ページ上のすべてのラベルのリストです。コードについてはEDIT2を参照してください。 –