VAADIN客户端组件逻辑

3

我在我的简单应用程序中使用VAADIN框架。 我有两个自定义组件,例如

@ClientWidget(value = VComponent1.class)
public class Component1 {
    private Component2 cmp2;

    public void setDataSource(Component2 cmp2) {
        this.cmp2 = cmp2;
    }
}

"and"。
@ClientWidget(value = VComponent2.class)
public class Component2 {
}

我想在服务器端绑定它们。
...
Component2 cmp2 = new Component2();
Component1 cmp1 = new Component1();
cmp1.setDataSource(cmp2);

mainWindow.addComponent(cmp1);
mainWindow.addComponent(cmp2);
...

问题是我不知道如何将绑定信息发送到VComponent1。
VComponent1应该直接链接到VComponent2。
public class VComponent2 implements Paintable {

    public String getCurrentData() {
        return "Hello";
    }
}


public class VComponent1 implements Paintable,
ClickHandler {
    VComponent2 dataSource;

    @Override
    public void onClick(ClickEvent event) {
        super.onClick(event);
        String data = dataSource.getCurrentData();
        client.updateVariable(uidlId, "curData", data, true);
    }
}

由于一些特定的时间问题,我需要避免通过Component2的服务器部分进行通信。VComponent1应该直接访问VComponent2。

你能帮我处理一下我的情况吗?

谢谢, Aritomo

1个回答

2
您可以像这样将一个Vaadin组件的引用传递给另一个组件:
在服务器端:
public void paintContent(PaintTarget target) throws PaintException {    
    ..

    target.addAttribute("mycomponent", component);
    ..
}

客户端:

public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
    ..

    Paintable componentPaintable = uidl.getPaintableAttribute("mycomponent", client);
    ..
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接