Java 要为类中的字段(dao)创建视图绑定器。该字段将json作为文本 公共类JsonObject{ 私有HashMap jsonObjects; 私有列表jsonArray; 私有整数jsonNumber; 私有字符串jsonString; 私有布尔; 私有浮动jsonFloat; 私人字符串原件; 私人视野; @抑制警告(“未选中”) 公共JsonObject(字符串json){ //…类字段的json解析器 } 无效名称(视图v){ 这个视图=v; } //…能手和二传手 }

Java 要为类中的字段(dao)创建视图绑定器。该字段将json作为文本 公共类JsonObject{ 私有HashMap jsonObjects; 私有列表jsonArray; 私有整数jsonNumber; 私有字符串jsonString; 私有布尔; 私有浮动jsonFloat; 私人字符串原件; 私人视野; @抑制警告(“未选中”) 公共JsonObject(字符串json){ //…类字段的json解析器 } 无效名称(视图v){ 这个视图=v; } //…能手和二传手 },java,generics,vaadin,Java,Generics,Vaadin,使用类似Vaadin FW的UI基础设施。 我不会这样宣布: public class JsonObject { private HashMap<String, JsonObject> jsonObjects; private List<JsonObject> jsonArray; private Integer jsonNumber; private String jsonString; private Boolean jsonB

使用类似Vaadin FW的UI基础设施。 我不会这样宣布:

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
}
公共类Exm扩展了FormLayout{
公共Exm(){
字符串json=“{some json….}”;
JsonObject js=新的JsonObject(json);
js.viewBainder(TextField::getValue,TextField::setValue)
.viewCaption(TextField::setCaption,TextField::getCaption)
.viewValueChangeEvents(文本字段::addValueChangeListener);
addComponent(js.getView());
}
}
没有泛型类,只有泛型方法,我能做到这一点吗

如何在类中绑定视图和抽象方法

请。举个简单的例子

附言。 我是爪哇大学的大三学生。不要硬着头皮思考。我
Thanx.

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

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

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

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

    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());
        }
    }
TextField nameField = new TextField();

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