powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / SWING
12 сообщений из 12, страница 1 из 1
SWING
    #38511773
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Есть форма с сотней(а может и 2-мя сотнями) полей для ввода, вопрос как правильно все это поместить в БД. Поясняю вариант 1: пробежать по всем панелям и собрать в список или map(если в мап то можно указать название поля - значение) компоненты с приведением к текстфилд, затем уже его методом получать содержимое и передавать в сущность для последующей записи в БД. Сразу возникают проблемы с типами данных т.к. из текстфилд возвращает всегда строку, конечно ее можно легко парсить, но это надо делать индивидуально для каждого значения:(
2: Создать бин, привязать к нему через биндинг поля...(опять же потом в сущность и данные в БД) работающего варианта у меня не получилось, куча ошибок связанных с типами полей.
Хотелось бы замечания, предложения услышать...
Да сразу говорю задача больше учебная чем реальная.
...
Рейтинг: 0 / 0
SWING
    #38511780
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegeos,

а можете приложить фото того осьминога, который все это заполняет?
...
Рейтинг: 0 / 0
SWING
    #38511791
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если серьезно мысли есть?
...
Рейтинг: 0 / 0
SWING
    #38511799
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegeosа если серьезно мысли есть?

если приложение у вас строиться по классическй MVC схеме, то исходя из нее во view передается некая сущность, которая имеет все поля, которые вы заполняете во view. После Submit`а - эта сущность возвращается в сервис слой , где должным образом обрабатывается и сохраняется уже в базу посредством какого нить dao слоя.Проще всего, наверное, сущность запамить с помощью любого orm`а(допустим hibernate) на одну или несколько таблиц и сделать что нить вроде entityManager.persist в качестве сохранения.
Но я бы все пихал в мапу чисто из лени ;) Сделал бы бы какой нить абстрактный контрол, там бы какой нить метод setOnAction и по изменению контрола обязательно включил бы onAction - где сохранял бы значение в мапу ;)
...
Рейтинг: 0 / 0
SWING
    #38511840
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно же MVVM, биндинг, ну и не обязательно всё пихать в единственный бин. Стоит таки подумать над бизнес-моделью и нормализацией БД.
Если у вас биндинг не получился и вы не разобрались почему, то откуда уверенность что получиться что-то другое?
...
Рейтинг: 0 / 0
SWING
    #38511879
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"что-то другое" работает, но неудобно, некрасиво, сложно поддерживать...
а биндинг не то чтобы совсем не получился, просто получается еще хуже того что есть, зачем усложнять и так сложное. По поводу нормализации бд, здесь все в порядке, структура БД устраивает, что-то выделять нет необходимости.
...
Рейтинг: 0 / 0
SWING
    #38511896
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, не знаю. На пальцах там можно долго мусолить, потому что никакой конкретики пока не написано. Соответственно в чем именно проблема не понятно, и какого вы ответа ждете, ни сказал ни слова о самой проблеме?

Не скажу что у нас по 100 полей на формах, но 20-30, точно наберется. Через биндинг чудесно всё связывается с бинами и затем персиститься. Есть, конечно, несколько специфичных проблем, но они решаются простыми утилитами на рефликсии.

Попробуйте WindowBuilder Pro - накидайте в нем простую форму и сконфигурируйте в нем же binding. Увидите желаемую структуру и сможете на неё перевести вашу форму.
...
Рейтинг: 0 / 0
SWING
    #38511903
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegeos,

а что там усложнять то, много небось накопипащено?
...
Рейтинг: 0 / 0
SWING
    #38511905
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С одной стороны задача не сложная по сути: вводятся значения их надо проверить и записать в БД, вопрос в количестве вводимых данных и независимости от этого количества.
Есть шаблоны по которым люди уже давно работают, непонятны детали(лично для меня) реализации, КАК правильно делать? (сбор данных их обработку)

Пример ввел числовое значение в поле, привязываю его к полю бина... Сразу вопрос приведение типов, ввожу по факту строку, есть Конвертер, но опять надо для всех используемых типов его реализовать и приделать. Это я могу сделать по другому: по максимуму регулярные выражения и маски в форме ввода, проверки перед сохранением в сущность.
А если полей для ввода МНОГО это для каждого надо заморочиться (пусть конвертеров будет и не много)
...
Рейтинг: 0 / 0
SWING
    #38511951
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz
Не скажу что у нас по 100 полей на формах, но 20-30, точно наберется. Через биндинг чудесно всё связывается с бинами и затем персиститься. Есть, конечно, несколько специфичных проблем, но они решаются простыми утилитами на рефликсии.



Да примерно такого ответа и жду
...
Рейтинг: 0 / 0
SWING
    #38511968
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegeosС одной стороны задача не сложная по сути: вводятся значения их надо проверить и записать в БД, вопрос в количестве вводимых данных и независимости от этого количества.
Есть шаблоны по которым люди уже давно работают, непонятны детали(лично для меня) реализации, КАК правильно делать? (сбор данных их обработку)


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
class BeanViewModel{
     Bean model;
}

class SaveAction extends Action{
     public void actionPerformed(ActionEvent e) {
          if(Validator.valid(beanViewModel)){ //Валидировать лучше всего сам бин, так как в валидации много бизнес-логики. Но иногда валидация специфична только для GUI, тогда валидируется ViewModel.
               Repository.persist(beanViewModel.model);
          }
     }
}

public class BeanPanel extends AbstractPanel{
  private JTextField field;
  private Action action = new SaveAction();
  BeanViewModel beanViewModel; //Это обертка над Model, в зависимости от нужд, биндинг реализуется либо на Model (Bean), либо на ViewModel (когда нужно что-то GUI-специфичное сделать при изменении значения)

   public BeanPanel(Bean model){
       this.beanViewModel = new BeanViewModel(model);
       initGuiComponent();
       initDataBindings();
   }

  protected void initGuiComponent() {
       setLayout(new MigLayout("", ...);
       this.field = new JTextField();
       add(this.field, "cell 0 0");
  }

  protected void initDataBindings() {
        BeanProperty<JTextField, String> textProperty = BeanProperty.create("text");
        BeanProperty<BeanViewModel, String> beanProperty = BeanProperty.create("model.property"); 
        AutoBinding<BeanViewModel, String, JTextField, String> autoBinding = Bindings.createAutoBinding(AutoBinding.UpdateStrategy.READ_WRITE, beanViewModel, beanProperty, this.field, textProperty);
        autoBinding.setConverter(new IntConverter(0));
        autoBinding.bind();
  }

}



olegeosПример ввел числовое значение в поле, привязываю его к полю бина... Сразу вопрос приведение типов, ввожу по факту строку, есть Конвертер, но опять надо для всех используемых типов его реализовать и приделать. Это я могу сделать по другому: по максимуму регулярные выражения и маски в форме ввода, проверки перед сохранением в сущность.
А если полей для ввода МНОГО это для каждого надо заморочиться (пусть конвертеров будет и не много)
Ну, во-первых завести свой контрол NumberTextField под нужды проекта.
Во-вторых конвертеров не так много. (У нас сейчас 27, половина для разных типов Date/Time, вторая половина для специфичных полей). Но они примитивны и понятны, хоть 50 будет - не страшно.
Использовать тоще проше простого.
...
Рейтинг: 0 / 0
SWING
    #38512019
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, спасибо что разжевали!!!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / SWING
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]