如何在wicket中连接2个文本框?

如何在wicket中连接2个文本框?,wicket,Wicket,所以我得到了这两个文本框,我试图将它们连接在一起,并在标签中显示结果。我找到了一个例子,并像例子中那样做了,但有些地方不对劲。所以也许有人能看出我做错了什么,因为我刚刚开始,不知道如何正确地做 public class HomePage extends WebPage { private String fNumber="Big"; private String sNumber=" text!"; private String sResult=fNumber+sNumbe

所以我得到了这两个文本框,我试图将它们连接在一起,并在标签中显示结果。我找到了一个例子,并像例子中那样做了,但有些地方不对劲。所以也许有人能看出我做错了什么,因为我刚刚开始,不知道如何正确地做

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);
    }
}
公共类主页扩展网页{
私有字符串fNumber=“大”;
私有字符串sNumber=“text!”;
私有字符串sResult=fNumber+sNumber;
公共网页(){
PropertyModel firstNumber=新的PropertyModel(此“fNumber”);
PropertyModel secondNumber=新的PropertyModel(此“sNumber”);
添加(新标签(“消息”、“HelloWorld!”);
添加(新标签(“结果”,sResult));
表格=新表格(“表格”);
添加(新文本字段(“firstNumber”,firstNumber));
添加(新文本字段(“secondNumber”,secondNumber));
添加(表格);
}
}
苏,我做了这个

`添加(新标签(“消息”、“HelloWorld!”)

add(新标签(“结果”),新模型(numb.getsResult());
表格=新表格(“表格”);
add(新文本字段(“firstNumber”,新模型(numb.setfNumber()));
添加(新文本字段(“secondNumber”),新模型(numb.setNumber());
添加(表格)`
我有一个类,它有3个字符串字段,getter和setter,还有sii,我已经了解了很多,上一条评论解释了一些事情,也许有人知道如何解决这个问题。

你需要“重新计算”你的结果。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
}
}));
add(新标签(“结果”),新IModel(){
@凌驾
公共图书馆{
//无所事事
}
@凌驾
公共字符串getObject(){
返回fNumber+sNumber;
}
@凌驾
公共void集合对象(字符串对象){
//无所事事
}
}));
此外,您必须使用示例中的属性模型。

您需要“重新计算”结果。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
}
}));
add(新标签(“结果”),新IModel(){
@凌驾
公共图书馆{
//无所事事
}
@凌驾
公共字符串getObject(){
返回fNumber+sNumber;
}
@凌驾
公共void集合对象(字符串对象){
//无所事事
}
}));

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

要连接两个字符串,我通常使用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的链接,因为它会对您有很大帮助。

要连接两个字符串,我通常使用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的链接,因为它应该会对您有很大帮助。

我认为如果您阅读此链接最好:基本上有两件事情出了问题,即您的标签没有动态模型,并且您在创建时静态地连接了值。我认为您最好阅读此链接:基本上,出了问题的两件事是您的标签没有动态模型,并且您在创建时静态地连接这些值。+1回答得不错,但值得一提的是,依赖模型并进行适当的分离是一种很好的做法。如果类变量比两个字符串更重,那么在这种情况下使用类变量难道不会给你带来麻烦吗?@XaviLópez,谢谢。我想我的答案应该是提倡模型,好吧,不是分离式的,但在这种情况下这是没有用的。使用模型的模型是好的,但IMO超出了关于其他问题的SO答案的范围,当他尝试将文本字段用于非字符串+1的好答案时,可能会出现问题,但值得一提的是,依赖模型并进行适当的分离是一种好的做法。如果类变量比两个字符串更重,那么在这种情况下使用类变量难道不会给你带来麻烦吗?@XaviLópez,谢谢。我想我的答案应该是提倡模型,好吧,不是分离式的,但在这种情况下这是没有用的。使用模型的模型很好,但我不在SO回答的范围之内,因为当他尝试将文本字段用于非字符串时,可能会出现问题