0

Пишу программу и хочу использовать аннотацию @Service. Я всегда писал логическую часть в классе, в котором есть аннотация @Controller. Мне сказали, что нужно писать всю логику в классе, в котором есть аннотация @Service, и отсюда нужно присылать данные в контроллер и оттуда - в jsp либо html.

Не знаю, это правильно вообще или нет. Где-то читал, что аннотацию @Service ставят для бизнес-логики. Написал программу точно так же, но логическая часть уже в том классе, в котором была аннотация @Service.

И сразу возникла проблема: не могу сделать return"redirect:/ в контроллере. Я никогда не делал это. Может быть, допустил ошибки или этот @Service вообще нужна для другого решения?

Подскажите пожалуйста, как можно отправить данные в контроллер.

@service

@Service
public class MainService {
 
 @RequestMapping(value = "/", method = RequestMethod.GET)
 public String str(ModelMap map) {
 map.addAttribute("user", new User());
 return "redirect:/index";
 }

@Controller

 @Controller
public class MainController {
 @RequestMapping(value = "/index")
 public String mainController(ModelMap modelMap){
 modelMap.addAttribute("newUser",new User());
 return "test";
 }
}
Byb
2,3745 золотых знаков12 серебряных знаков24 бронзовых знака
задан 12 янв. 2019 в 18:36
1
  • Изменил вопрос спустя 3 года Неплох Commented 21 авг. 2023 в 7:34

1 ответ 1

1

Вам правильно сказали, всю бизнеслогику стоит писать в сервисах. В вашем случае, бизнес логика это вот эта строка:

map.addAttribute("user", new User());

Её можно вынести в сервис:

@Service
public class MainService {
 public void newUser(ModelMap map) {
 map.addAttribute("user", new User());
 }
}

А в контроллере вызывать её в соответствующем методе.

@Controller
public class MainController {
 @Autowired
 MainService mainService;
 @RequestMapping(value = "/", method = RequestMethod.GET)
 public String str(ModelMap map) {
 mainService.newUser(map);
 return "redirect:/index";
 }
}
ответ дан 12 янв. 2019 в 19:09
1
  • Спасибо огромное Commented 12 янв. 2019 в 19:19

Ваш ответ

Черновик сохранён
Черновик удалён

Зарегистрируйтесь или войдите

Регистрация через Google
Регистрация через почту

Отправить без регистрации

Необходима, но никому не показывается

Отправить без регистрации

Необходима, но никому не показывается

Нажимая «Отправить ответ», вы соглашаетесь с условиями пользования и подтверждаете, что прочитали политику конфиденциальности.