У меня есть форма с выпадающим списком / выпадающим, чтобы выбрать язык пользователя.Если пользователь меняет язык, я хотел бы обновить все метки, но оставить элементы ввода в покое.
В jQuery я бы запросил список идентификаторов меток и новые тексты через 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)));