Wpis z mikrobloga

#spring #java #programowanie
Mirki, robię formularz dodawania nowego np. kota. Kot zawiera w sobie inne obiekty takie jak obiekt sekcji:

@ManyToOne
@JoinColumn(name = "idsection")
private Section section;

Razem z pustym modelem kota przekażę do formularza listę sekcji. Użytkownik będzie miał możliwość wyboru z listy.
Jak przypisać wybór użytkownika jako obiekt do modelu kota na poziomie formularza? Czy dopiero później muszę dodać tę sekcję ręcznie kot.setSection(sectionService.findOne(id))? Albo może jest jakaś adnotacja która pozwoli na przypisanie id a później automatycznie przypisze odpowiedni obiekt?

Do widoków używam Thymeleaf jeżeli to ma znaczenie.
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Szczypioreg: co

Zrób klasę do formularza i nie jedź prosto z modelu. W metodzie odbierz dane, zwaliduj, zrób obiekt który chcesz zapisać do bazy i zapisz go. Jeśli obiekt ma relacje to musisz je też zapisać.

A tak prościej to gadasz sobie z hajbernejtem (bo zakładam że z niego korzystasz, gdyby to bylo mongo go nie byłoby pewnie pytania ( ͡º ͜ʖ͡º) ) to musisz
  • Odpowiedz
@incendio: myślałem żeby tak to zrobić ale nie miałem pewności czy to dobry pomysł :)
Mam jeszcze kilka pytań.
1. Gdy w jakimś widoku używam kilku obiektów to też mogę pakować je w jeden i tak przekazać żeby nie robić bałaganu w kontrolerze?

2. Walidacja to raczej na poziomie kontrolera, a gdzie tworzyć nowy obiekt domenowy z tych danych które przyszły w formularzu? W serwisie tej domeny czy też w
  • Odpowiedz
@Szczypioreg:
1. Tak
2. W kontrolerze, ja w serwisie trzymam to co jeszcze kiedyś mi się przyda, a odczyt z formularza zapewne masz tylko w jednym miejscu (bo po co 2 takie same formularze)
3. Przeważnie daje do paczki 'form' obok kontrolera
4. ?
  • Odpowiedz
@incendio: serwisy może nie dla tych pośredników formularzy, ale jak zrobię klasę w której będę trzymał np.dane do strony głównej to gdzieś będę musiał je zapakować. W kontrolerze czy serwisie?
  • Odpowiedz
@Szczypioreg: w co zapakować ( ͡° ͜ʖ ͡°) w inne obiekty to w kontolerze raczej, w serwisie przeważnie mam takie rzeczy typu ustawienie daty ostatniej aktualizacji encji albo daty utworzenia (chociaż jest do tego adnotacja, jednak nie chciało mi się bawić nią)
  • Odpowiedz