Как изменить текст ярлыка на onkeyup textarea? Я пробовал это, но не работает:Wicket: Как изменить текст ярлыка на onkeyup textarea?
Form form;
TextArea ta;
MyLabel resultDiv;
/**
* Constructor that is invoked when page is invoked without a session.
*/
public HomePage(final PageParameters parameters) {
this.form = new Form("form");
this.ta = new TextArea("text");
this.resultDiv = new MyLabel("result");
this.ta.add(new AjaxEventBehavior("onKeyUp") {
protected void onEvent(AjaxRequestTarget target) {
System.out.println("Ajax!");
resultDiv.setText("Foobar");
resultDiv.renderComponent();
}
});
form.add(ta);
form.add(resultDiv);
add(form);
}// const
public class MyLabel extends Label {
private String text = "original";
public String getText() { return text; }
public void setText(String text) { this.text = text; }
public MyLabel(String id) {
super(id);
this.setModel(new PropertyModel(this,"text"));
}
}
Решение
leonidv был почти там. Результирующий код:
Form form;
TextArea ta;
Label resultDiv = new Label("result", new PropertyModel(this,"labelText")){
{ setOutputMarkupId(true); }
};
private String labelText = "original";
/**
* Constructor that is invoked when page is invoked without a session.
*/
public HomePage(final PageParameters parameters) {
this.form = new Form("form");
this.ta = new TextArea("text");
this.ta.add(new AjaxEventBehavior("onKeyUp") {
protected void onEvent(AjaxRequestTarget target) {
System.out.println("Ajax!");
labelText = "Foobar"; // Doesn't even need get/set, which is great.
target.addComponent(resultDiv);
//resultDiv.renderComponent(); // WRONG!!
}
});
form.add(ta);
form.add(resultDiv);
add(form);
}// const
последняя проблема была моя плохая интуиция о добавлении renderComponent()
- что, по какой-то причине, сохранил этикетку без изменений.
К слову, результат будет служить в скором времени как песочница.
Спасибо за помощь!
> Я не понимаю многих частей вашего кода. - Я тоже не знаю :) Я новичок в Wicket, и это не совсем интуитивно. –
Очень замечательная функция калитки - это обязательные поля для компонентов. Таким образом, вам не нужно «публичный класс MyLabel расширяет ярлык». Все запрашивается для создания PropertyModel: MyPage .. { Строка text = "original"; .... в конструкторе .... новый ярлык ("id", новый PropertyModel (это, "текст"); } После этого калитка связывает ярлык и текстовое поле. Итак, когда вы обрабатываете submit или AJAX событие вам не нужно писать л, как: текст = label.getValue() System.out.println (текст); калитка на это автоматически, просто написать: SYSOUT (текст); – leonidv
вы можете быть заинтересованные в этой статье: http://cwiki.apache.org/WICKET/working-with-wicket-models.html – leonidv