powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Валидация формы Spring, наследование моделей.
5 сообщений из 5, страница 1 из 1
Валидация формы Spring, наследование моделей.
    #38007746
Usik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим имеется класс Базовый пользователь и супер узер.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class BaseUser{
 private long id;
 @NotNull
 private String lastName;
}

public class SuperUser extends BaseUser{
 private String firstName;
}


Имеется контроллер благодаря которому я могу изменить данные о узере/супер узере

Код: 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.
@Controller
public class EditUser{

 @RequestMapping(value="/edituser",method=RequestMethod.GET)
 public String getForm(@RequestParam("userType")long userType,Model model){
   model.addAttribute(getUserByType(userType));
   return "form";
 }

 private BaseUser getUserByType(long typeId){
   if(typeId==1){
     return new BaseUser();
   }
   else{
    return new SuperUser();
   }
 }

 @RequestMapping(value="/edituser",method=RequestMethod.POST)
 public String postForm(@Valid BaseUser baseUser,Binding result){
  if (result.hasErrors())
    return "form";
  else{
  //some actions , casting to type base or super user
  return "next";
  }
 }
}



Вопрос вот в чем, метод getForm отрабатывает всегда как нужно, а вот метод POST при самбите форме косячит, а именно если я редактирую суперпользователя, нажимаю сабмит, то возникает ошибка , стектрейса под рукой нету, но суть ее в том что в классе BaseUser он не может найти firstName. Вопрос в том можно ли заставить этот контроллер как то подкастовывать что ли? Ну в общем заставить его правильно работать с наследованием модели?
...
Рейтинг: 0 / 0
Валидация формы Spring, наследование моделей.
    #38007922
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно изменить тип аргумента baseUser на SuperUser
...
Рейтинг: 0 / 0
Валидация формы Spring, наследование моделей.
    #38007937
Usik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагман, я знаю но тогда придется писать такой же контроллер для BaseUser. А я хотел один универсальный.
...
Рейтинг: 0 / 0
Валидация формы Spring, наследование моделей.
    #38007989
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а как по-вашему спринг догадается, какой класс вам нужен?
...
Рейтинг: 0 / 0
Валидация формы Spring, наследование моделей.
    #38007999
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще правильно сделать 2 контроллера для разных типов юзера,
Код: java
1.
if(typeId==1)

-грешновато
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Валидация формы Spring, наследование моделей.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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