Przekazanie obiektu w widoku

0

Cześć,
Nie potrafię poradzić sobie z pewnym problemem mianowicie.
Mam taki widok w kontrolerze:

    @Autowired
    EmployeeService employeeService;
    @Autowired
    AddressService addressService;
    @Autowired
    AddressRepository addressRepository;

    @GetMapping("/new")
    public String showCreateFormForEmployeeAndAddresses(Model model) {
        
        for(int i = 1; i<=2; i++){
            addressService.newAddress(new Address());
        }
        model.addAttribute("employee", new Employee()).addAttribute("form", addressRepository);
        return "new_employee_form";
    }

W kontrolerze tym, mam wstrzykniętą warstwę addressRepository z której korzystam w widoku, a nie chcę aby tak było. Chcę przejść przez warstwę addressService.

addressRepository dla atrybutu "form" odwołuje się w widoku bezpośrednio do:

//klasa addressRepository
public List<Address> addresses = new ArrayList<>();

Próbuję zrobić tak aby zachować warstwę pośrednią Service i dopiero z niej wskazać na Listę w addressRepository ale nie wiem jak to zrobić.
Reasumując ... chciałbym aby widok miał taką postać:

    @GetMapping("/new")
    public String showCreateFormForEmployeeAndAddresses(Model model) {
        
        for(int i = 1; i<=2; i++){
            addressService.newAddress(new Address());
        }
        model.addAttribute("employee", new Employee()).addAttribute("form", addressService);
        return "new_employee_form";
    }

następnie abym z poziomu klasy addressService wskazał na listę znajdującą się w addressRepository.

0

Musisz w AddressService wstrzyknąć przez autowired AdressRepository tak samo jak teraz robisz to w kontrolerze ( o ile już tego nie robisz bo chyba metoda newAdress z serwisu dodaje do repository?) . Jeśli już masz to dodane to musisz napisać metodę w serwisie która zwróci listę z repository i potem w widoku odwołać się do tej napisanej metody z serwisu

0

Zgadza się. W Service wstrzykuję addressRepository. Mam właśnie problem z napisaniem tej metody która zwróci mi listę z addressRepository.

0

public List<Address> getAdresses() {
return addressRepository.getAddresses() // po kropce nazwa taka jak dostajesz listę z adresami z repository
}
To będzie coś w tym stylu. A z czym dokładnie w takiej metodzie miałeś problem? Nie używasz przez przypadek magii Springa bez zrozumienia podstaw javy?

1 użytkowników online, w tym zalogowanych: 0, gości: 1