0

所以我得到了这两个文本框,我试图将它们连接在一起并在标签中显示结果。我找到了一个示例,并按照示例进行了操作,但是出了点问题。所以也许有人可以看到我做错了什么,因为我刚刚开始并且不明白如何正确地做到这一点。

public class HomePage extends WebPage {

    private String fNumber="Big";
    private String sNumber=" text!";
    private String sResult=fNumber+sNumber;

    public HomePage() {

        PropertyModel<String> firstNumber = new PropertyModel<String>(this, "fNumber");
        PropertyModel<String> secondNumber = new PropertyModel<String>(this, "sNumber");

        add(new Label("message", "HelloWorld!"));

        add(new Label("result", sResult));

        Form<?> form = new Form("form");
        form.add(new TextField<String>("firstNumber", firstNumber));
        form.add(new TextField<String>("secondNumber", secondNumber));
        add(form);
    }
}

所以我做了这个

` add(new Label("message", "HelloWorld!"));

    add(new Label("result", new Model(numb.getsResult())));


    Form<?> form = new Form("form") ;

    form.add(new TextField<String>("firstNumber", new Model(numb.setfNumber())));
    form.add(new TextField<String>("secondNumber",new Model(numb.setsNumber())));
    add(form);`

我有一个类,它有 3 个字符串字段、getter 和 setter 以及 sii,我已经理解了最后一条评论解释了一些事情,也许有人知道如何解决这个问题。

4

2 回答 2

2

您需要“重新计算”您的结果。Wicket 方法是为您的标签定义一个模型来进行连接。

add(new Label("result", new IModel<String>(){

@Override
public void detach() {
    // do nothing
}

@Override
public String getObject() {
    return fNumber + sNumber;
}

@Override
public void setObject(String object) {
    // do nothing
}
}));

此外,您必须使用示例中的 PropertyModel。

于 2012-10-22T08:14:42.473 回答
1

要连接两个字符串,我通常使用 StringBuilder:

        PropertyModel firstNumber = new PropertyModel(this,"fNumber");
        PropertyModel secondNumber = new PropertyModel(this,"sNumber");
        PropertyModel resultNumber = new PropertyModel(this,"sResult");
        StringBuilder sResult = new StringBuilder((String) firstNumber.getObject());
        sResult.append((String) secondNumber.getObject());
        resultNumber.setObject(sResult.toString());

另外,请阅读 biziclop 的链接,因为它应该对您有很大帮助。

于 2012-10-22T15:31:41.973 回答