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