Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.test.spring.multilevel;
- import java.util.Random;
- import com.example.test.spring.MessageBean;
- import com.vaadin.flow.component.orderedlayout.VerticalLayout;
- import com.vaadin.flow.component.textfield.TextField;
- import com.vaadin.flow.data.binder.Binder;
- import com.vaadin.flow.router.Route;
- import org.springframework.beans.factory.annotation.Autowired;
- @Route
- public class MainView extends VerticalLayout {
- private TextField typeField = new TextField();
- public MainView(@Autowired MessageBean bean) {
- add(typeField);
- Binder<? extends ParentDTO> binder;
- if (new Random().nextInt(2) == 0) {
- ChildDTO child = new ChildDTO();
- binder = createChildBinder(child);
- } else {
- ChildTwoDTO child = new ChildTwoDTO();
- binder = createChildBinder(child);
- }
- }
- public Binder<ChildDTO> createChildBinder(ChildDTO bean) {
- Binder<ChildDTO> binder = createBinder(bean);
- TextField titleField = new TextField();
- add(titleField);
- binder.forField(titleField).asRequired()
- .bind(ChildDTO::getTitle, ChildDTO::setTitle);
- binder.readBean(bean);
- return binder;
- }
- public Binder<ChildTwoDTO> createChildBinder(ChildTwoDTO bean) {
- Binder<ChildTwoDTO> binder = createBinder(bean);
- TextField languageField = new TextField();
- add(languageField);
- binder.forField(languageField).asRequired()
- .bind(ChildTwoDTO::getLanguage, ChildTwoDTO::setLanguage);
- binder.readBean(bean);
- return binder;
- }
- public <T extends ParentDTO> Binder<T> createBinder(T bean) {
- Binder<T> binder = new Binder<>();
- binder.forField(typeField).asRequired("Better fill this...")
- .bind(ParentDTO::getType, ParentDTO::setType);
- return binder;
- }
- public static abstract class ParentDTO {
- private String type = "type";
- public String getType() {
- return type;
- }
- public void setType(String type) {
- this.type = type;
- }
- }
- public static class ChildDTO extends ParentDTO {
- private String title = "title";
- public String getTitle() {
- return title;
- }
- public void setTitle(String title) {
- this.title = title;
- }
- }
- public static class ChildTwoDTO extends ParentDTO {
- private String language = "language";
- public String getLanguage() {
- return language;
- }
- public void setLanguage(String language) {
- this.language = language;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment