【问题标题】:How can I serialize and deserialize components in Vaadin Flow 14?如何在 Vaadin Flow 14 中序列化和反序列化组件?
【发布时间】:2020-03-02 13:18:31
【问题描述】:

假设我有一堆文本字段、文本框、带有名称的按钮和复选框等。

当我按下保存按钮时,我想保存所有这些组件。我编写了一个类,它将从这些组件中挑选出感兴趣的值。但问题是,这会变成很多代码。

将组件中的数据保存到文件中一定是一种更简单的方法吗?

【问题讨论】:

  • 什么 vaadion 版本?在 V8 中有 writeDesign
  • @cfrick 这是 vaadin 14
  • 我不认为“序列化”是您想要的正确技术术语。您是否在询问将用户输入中的数据值保存到存储中?你在使用数据库吗?请参阅 Wikipedia 中的“序列化”与“持久性”。
  • @BasilBourque 我认为序列化对我来说很好用。我今天将给出答案,然后给出答复。

标签: java serialization deserialization vaadin-flow vaadin14


【解决方案1】:

如果您的数据表示为业务对象 (JavaBeans),那么使用 Vaadin 的 Binder 类(它还有其他好处,例如促进组件的验证和转换)更容易实现您的目标。在最简单的形式中,它可能看起来像这样:

Binder<Person> binder = new Binder<>(Person.class);
TextField text= new TextField();
binder.bind(text, Person::getName, Person::setName);

Person person = new Person("First Last");
//Then you can set this person bean to be automatically in sync
//with the the TextField like so
binder.setBean(person);

Vaadin 的文档有更多示例和高级用例: https://vaadin.com/docs/v14/flow/binding-data/tutorial-flow-components-binder.html

【讨论】:

  • 看起来很棒!但是然后我将活页夹对象保存到一个文件中,然后我也可以加载它?
  • 不是 binder 对象,您需要保存 bean(或 bean)并再次加载它
  • 如何保存 bean?我对此并不熟悉。
  • @DanielMårtensson 不,您不保存活页夹对象,而是保存在活页夹中设置的 bean。在这种情况下,您可以将绑定器视为获取由所有绑定输入字段表示的 bean 的助手。然后可以使用objectmapper 完成 bean 的序列化和反序列化
  • @kscherrer 不确定如何保存或加载 bean。
猜你喜欢
  • 1970-01-01
  • 2012-10-27
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 2012-12-19
  • 1970-01-01
相关资源
最近更新 更多