如何更改Wicket中的链接文本?

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:容器不会在生产中呈现)


ber*_*ert 8

您需要使用自己的模型支持链接中的文本:

<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()函数,则返回文本,具体取决于状态.


use*_*279 7

没有必要更改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)