[英]Want to create view binder for field in class(dao). the field take json as a text
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。 舉個簡單的例子。
附言:我是Java的大三學生。 不要想在硬ob。 我! 感謝名單。
您可以在Vaadin中找到與表單進行數據綁定的文檔:
https://vaadin.com/docs/v8/framework/datamodel/datamodel-forms.html
這個概念是,在Vaadin中有Binder類,可以將POA(即具有屬性的getter和setter的Java對象)綁定到Vaadin字段組件(通過實現HasValue來實現)Vaadin 8數據綁定最容易與Java8語法一起使用。
問題的第二部分是如何將JSON反序列化為POJO並返回字符串,並且基於您的問題,我不了解您使用的是什么庫,有很多,並且細節根據您的使用而有所不同。 無論使用什么,都應該使用getName()和setName(..)方法(現在name是JSON中的屬性之一)構造java對象。
通常,我們喜歡調用JSON DTO對象(=數據傳輸對象)的反序列化版本,因為它僅在應用程序內部使用。 因此,如果這稱為例如PersonDTO
TextField nameField = new TextField();
// Shorthand for cases without extra configuration
binder.bind(nameField, PersonDTO::getName, PersonDTO::setName);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.