Syl*_*vus 11 java wicket hyperlink event-handling
我创建了一个静态文本链接.这工作正常,但现在我也想在你点击链接时更改文本.
我得到了这个:
add(new Link("doAnything") {
@Override
public void onClick() {
// change the text!
// this.modelChanging();
// this.detach();
}
});
Run Code Online (Sandbox Code Playgroud)
我希望你能给我一些简单的建议 - 我真的很新:)
最好的问候伊莱亚斯
Sea*_*oyd 19
HTML:
<html><head></head><body>
<wicket:panel>
<a href="" wicket:id="link">
<wicket:container wicket:id="label" />
</a>
</wicket:panel>
</body></html>
Run Code Online (Sandbox Code Playgroud)
java:
public class MyPanel extends Panel{
private static class Mybean{
String labelText = "click me";
public String getLabelText(){
return this.labelText;
}
public void setLabelText(final String labelText){
this.labelText = labelText;
}
}
public MyPanel(final String id){
super(id);
final Mybean bean = new Mybean();
this.add(new Link<Void>("link"){
private static final long serialVersionUID = 1L;
@Override
public void onClick(){
bean.setLabelText("Thanks for clicking");
}
}.add(new Label("label", new PropertyModel<String>(bean, "labelText")))
);
}
}
Run Code Online (Sandbox Code Playgroud)
我倾向于使用wicket:容器,以便不用多余的元素污染HTML(wicket:容器不会在生产中呈现)
您需要使用自己的模型支持链接中的文本:
<a wicket:id="doAnything">
<span wicket:id="linktext"/>
</a>
在java中:
add(new Link("doAnything").add(new Label("linktext", Model.of("i 'm the text"));
Run Code Online (Sandbox Code Playgroud)
更好的是,如果您使用(复合)PropertyModel并具有getLinktext()函数,则返回文本,具体取决于状态.
没有必要更改html:
Link link = new Link("doAnything") {
@Override
public void onClick() {
// change the text!
// this.modelChanging();
// this.detach();
}
});
link.setBody(Model.of("visible link name"));
add(link);
Run Code Online (Sandbox Code Playgroud)