Как разделить поля формы на разные вкладки в vaadin?

У меня есть вкладка с 2 вкладками (A и B). Я хочу поместить все общие поля формы на вкладку A, а конкретные — на вкладку B. Все поля формы составляют один объект.

Например. моя модель данных ниже (я опускаю конструктор. Также это всего лишь пример, поэтому я использую только одно поле формы).

public class Person extends FormLayout {
   TextField name = new TextField("Name");  //Common to all persons
}

public class Student extends Person {
   TextField grade = new TextField("Grade"); //Specific to students
}

Я хочу поместить имя на вкладке A, так как оно является общим для всех людей, и оценку на вкладке B, поскольку оно характерно для учащихся. Имя и оценка соответствуют учащемуся. У меня есть POJO под названием Student в бэкэнде, который будет сопоставлен с полями формы. Я попробовал ниже

tabsheet.addTab(new Person(), "Common"); //Display only Name - GOOD
tabsheet.addTab(new Student(), "Specific"); //Display both Name & Grade - BAD. I only want Grade

Как разделить поля формы на разные вкладки?

Спасибо


person Andy    schedule 05.05.2015    source источник


Ответы (2)


Студент расширяет Person, поэтому правильно, что во второй вкладке вы видите оба поля.

Я бы рассмотрел общую структуру того, чего вы пытаетесь достичь. Может быть, вы можете попытаться создать вспомогательный класс с двумя методами, один из которых возвращает общую форму, а другой — конкретную. Или просто используйте один настраиваемый экземпляр Student, где вы можете пометить поля как общие или специальные и действовать соответствующим образом на вкладках. Это просто не кажется хорошим дизайном, если только я не упустил какой-то важный момент ;-)

Вы также можете использовать надстройки, такие как https://vaadin.com/directory#!addon/fieldbinder-addon, чтобы помочь вам в работе с полем.

person MarcelloGarini    schedule 05.05.2015

Я нашел решение своего вопроса. Мне нужно использовать BeanFieldGroup.

person Andy    schedule 06.05.2015