【发布时间】:2010-01-22 12:46:42
【问题描述】:
如何在 textarea 的 onkeyup 上更改标签的文本?我已经尝试过了,但不起作用:
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() 的直觉不好 - 由于某种原因,标签保持不变。
顺便说一下,结果很快就会作为JTexy lightweight markup language沙盒服务。
感谢您的帮助!
【问题讨论】: