Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / теряется поле объекта. Spring MVC / 6 сообщений из 6, страница 1 из 1
16.01.2017, 19:46
    #39385708
slavik_msc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теряется поле объекта. Spring MVC
Устанавливаю в контроллере Модельный атрибут Scope=Session.
Передаю на форму. Некоторые поля связываю с формой некоторые поля просто отображаю.
Передаю назад в контроллер, и там одно поле id = null.
Что не так?
...
Рейтинг: 0 / 0
17.01.2017, 07:32
    #39385813
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теряется поле объекта. Spring MVC
slavik_mscЧто не так?

Все. :-)

Если не трудно покажи код.
...
Рейтинг: 0 / 0
17.01.2017, 09:12
    #39385841
slavik_msc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теряется поле объекта. Spring MVC
mad_nazgulЕсли не трудно покажи код.

POJO

Код: 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.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
public class SickLeave {
       
       private Integer id;
       private String number;
       private Employee employee;
       private String fromDate;
       private String toDate;
       private Doctor doctorOut;
       private Doctor doctorClosing;
       private Diagnosis diagnosis;
       private String kind;
       private String exchange;
       
       public Integer getId() {
             return id;
       }
       public void setId(Integer id) {
             this.id = id;
       }
       public String getNumber() {
             return number;
       }
       public void setNumber(String number) {
             this.number = number;
       }
       public Employee getEmployee() {
             return employee;
       }
       public void setEmployee(Employee employee) {
             this.employee = employee;
       }
       public String getFromDate() {
             return fromDate;
       }
       public void setFromDate(String fromDate) {
             this.fromDate = fromDate;
       }
       public String getToDate() {
             return toDate;
       }
       public void setToDate(String toDate) {
             this.toDate = toDate;
       }
       public Doctor getDoctorOut() {
             return doctorOut;
       }
       public void setDoctorOut(Doctor doctorOut) {
             this.doctorOut = doctorOut;
       }
       public Doctor getDoctorClosing() {
             return doctorClosing;
       }
       public void setDoctorClosing(Doctor doctorClosing) {
             this.doctorClosing = doctorClosing;
       }
       public Diagnosis getDiagnosis() {
             return diagnosis;
       }
       public void setDiagnosis(Diagnosis diagnosis) {
             this.diagnosis = diagnosis;
       }
       public String getKind() {
             return kind;
       }
       public void setKind(String kind) {
             this.kind = kind;
       }
       public String getExchange() {
             return exchange;
       }
       public void setExchange(String exchange) {
             this.exchange = exchange;
       }
       
       public boolean isNew() {
             return (this.id == null);
       }
       
}



Код: 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.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
public class Employee {
       private Integer id;
       private String lastName;
       private String firstName;
       private String middleName; 
       private String year;
       private String numberCard;
       private Work work;
       private String address;
       private String description;
       private Category category;
       
       public Integer getId() {
             return id;
       }

       public void setId(Integer id) {
             this.id = id;
       }

       public String getLastName() {
             return lastName;
       }

       public void setLastName(String lastName) {
             this.lastName = lastName;
       }

       public String getFirstName() {
             return firstName;
       }

       public void setFirstName(String firstName) {
             this.firstName = firstName;
       }

       public String getMiddleName() {
             return middleName;
       }

       public void setMiddleName(String middleName) {
             this.middleName = middleName;
       }

       public String getYear() {
             return year;
       }

       public void setYear(String year) {
             this.year = year;
       }

       public String getNumberCard() {
             return numberCard;
       }

       public void setNumberCard(String numberCard) {
             this.numberCard = numberCard;
       }

       public Work getWork() {
             return work;
       }

       public void setWork(Work work) {
             this.work = work;
       }

       public String getAddress() {
             return address;
       }

       public void setAddress(String address) {
             this.address = address;
       }

       public String getDescription() {
             return description;
       }

       public void setDescription(String description) {
             this.description = description;
       }

       public Category getCategory() {
             return category;
       }

       public void setCategory(Category category) {
             this.category = category;
       }

       public boolean isNew() {
             return (this.id == null);
       }
}



Controller

Код: 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.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
....
@Controller
@SessionAttributes("employee")
public class PatientController {
       
       private final Logger logger = LoggerFactory.getLogger(PatientController.class);
       
       @Autowired
       private EmployeeService employeeService;
       
       @Autowired
       private WorkService workService;
       
       @Autowired
       private CategoryService categoryService;
       
       @Autowired
       private SickLeaveService sickLeaveService;
       
       @Autowired
       private DoctorService doctorService;
       
       @Autowired
       private DiagnosisService diagnosisService;
....
@RequestMapping(value = "/sickLeave/add", method = RequestMethod.GET)
             public String showAddSickLeaveForm(@ModelAttribute("employee") Employee employee,BindingResult result,Model model){
                    SickLeave sickLeave = new SickLeave();
                    
                    sickLeave.setEmployee(employee);
                    
                    Doctor doctorOut = new Doctor();
                    sickLeave.setDoctorOut(doctorOut);
                    
                    Doctor doctorClosing = new Doctor();
                    sickLeave.setDoctorClosing(doctorClosing);
                    
                    Diagnosis diagnosis = new Diagnosis();
                    sickLeave.setDiagnosis(diagnosis);
                    model.addAttribute("sickLeave", sickLeave);
                    
                    model.addAttribute("employee", employee);
                    
                    List<Doctor> doctors = doctorService.findByAll();
                    model.addAttribute("doctors", doctors);
                    
                    List<Diagnosis> diagnosList = diagnosisService.findByAll();
                    model.addAttribute("diagnosis", diagnosList);
                    return "employee/sickLeaveForm";
             }
             
             @RequestMapping(value = "/sickLeave/add", method = RequestMethod.POST)
             public String addSickLeaveForm(@ModelAttribute("SickLeave") SickLeave sickLeave, @ModelAttribute("employee") Employee employee,BindingResult result, Model model,
                           final RedirectAttributes redirectAttributes) {
  //Во первых почему вот здесь он у SickLeave он пустой? на форму никакого биндинга нет, нужно скрытый делать?
//Во вторых у аттрибута employee отсустствует единственное поле id, как так?                  
                    sickLeave.setEmployee(employee);

                    logger.debug("saveOrUpdateSickLeave() : {}", sickLeave);

                    if (result.hasErrors()) {
                           return "employee/sickLeaveForm";
                    } else {

                           // Add message to flash scope
                           redirectAttributes.addFlashAttribute("css", "success");
                           if(sickLeave.isNew()){
                             redirectAttributes.addFlashAttribute("msg", "sickLeave added successfully!");
                           }else{
                             redirectAttributes.addFlashAttribute("msg", "sickLeave updated successfully!");
                           }

                           sickLeaveService.saveOrUpdate(sickLeave);

                           // POST/REDIRECT/GET
                           return "redirect:/sickLeaveList/";
                    }
             }
...
Рейтинг: 0 / 0
17.01.2017, 10:18
    #39385869
slavik_msc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теряется поле объекта. Spring MVC
Добавил в метод пост HttpSession session, и из сессии уже вычитал атрибут. Так с самого начала надо было делать?
Ведь ModelAttribute scope = request или что то я не так понимаю?
...
Рейтинг: 0 / 0
17.01.2017, 12:02
    #39385960
slavik_msc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теряется поле объекта. Spring MVC
slavik_msc,

вопрос снимается атрибут sickLeave с большой буквы был указан, а employee похоже перетирался.

Кстати можно же использовать через HttpSession чтобы получить объект в сессии, но во всех туториалах обращение через ModelAttribute. Я правильно понимаю что ModelAttribute это спринговый механизм над HttpSession?
...
Рейтинг: 0 / 0
17.01.2017, 15:05
    #39386128
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теряется поле объекта. Spring MVC
slavik_msc,
Да.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / теряется поле объекта. Spring MVC / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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