想要在类(dao)中为字段创建视图绑定器。该字段将json作为文本

时间:2018-04-28 00:45:22

标签: java generics vaadin

public class JsonObject {
    private HashMap<String, JsonObject> jsonObjects;
    private List<JsonObject> jsonArray;
    private Integer jsonNumber;
    private String jsonString;
    private Boolean jsonBoolean;
    private Float jsonFloat;
    private String original;

    private VIEW view;

    @SuppressWarnings("unchecked")
    public JsonObject(String json) {
        //... json parser to class field  
    }
    <VIEW> void name(VIEW v) {
        this.view=v;
    }
    // ... getter and setters
}

像使用UI基础设施一样使用Vaadin FW。 我不会这样声明:

    public class Exm extends FormLayout {

        public Exm() {
            String json = "{some json ....}";
            JsonObject<TextField> js = new JsonObject(json);

            js.viewBainder(TextField::getValue,TextField::setValue)
            .viewCaption(TextField::setCaption,TextField::getCaption)
            .viewValueChangeEvents(TextField::addValueChangeListener);

            addComponent(js.getView());
        }
    }

我可以不使用泛型类,只使用泛型方法吗?

如何在类中绑定VIEW和抽象方法?

PLS。举个简单的例子。

P.S。 我是java的初级学生。不要在艰难的时候思考。我! 感谢名单。

1 个答案:

答案 0 :(得分:1)

您可以在这里找到与Vaadin中的表单绑定数据的文档:

https://vaadin.com/docs/v8/framework/datamodel/datamodel-forms.html

概念是在Vaadin中有Binder类,可以将Vaadin字段组件(实现HasValue)与POJO绑定(即具有属性的getter和setter的Java对象)Vaadin 8数据绑定最容易与Java8语法一起使用。

你问题的第二部分是如何将JSON反序列化为POJO并返回字符串,根据你的问题,我没有掌握你使用的库,有很多,而且细节根据你使用的内容而有所不同。你使用什么,你应该使用getName()和setName(..)方法构建java对象(name现在是JSON中的属性之一)。

How to convert String to JSONObject in Java

通常我们喜欢调用JSON DTO对象(=数据传输对象)的反序列化版本,因为它仅在应用程序内部使用。所以,如果这被称为例如PersonDTO

TextField nameField = new TextField();

// Shorthand for cases without extra configuration
binder.bind(nameField, PersonDTO::getName, PersonDTO::setName);