Как передать объект и хэш-карту атрибуту модели в весенний MVC, чтобы я мог использовать их одновременно? - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь создать «форму добавления сотрудника» с базовыми атрибутами, такими как имя, пол, адрес электронной почты и т. Д., Которые пользователи могут заполнить в форме

, будут доступны варианты для отделов, где список доступен.будет предварительно заполнен связанной хэш-картой, которая будет отправлена ​​с контроллера

Я уже добавил тип объекта атрибута "Сотрудник" в мою модель, поэтому при заполнении формы

и возврат в контроллер, объект сотрудника будет установлен автоматически

Controller.java

@GetMapping("/showFormForAdd")

public String showFormForAdd(Model theModel) {

    //fetch new list(if any) of departments added
    List<Department> theDepartments = departmentService.getDepartments();

    //Create a linkedhash map to hold our department_id-department name information
    final LinkedHashMap<Integer, String> departmentOptions = departmentService.generateDepartmentOptions(theDepartments);



    // create new employee object and attach to our model atrribute.

            //how to add multiple objects?? doing this so i can pre-populate available departments for selection
    theModel.addAttribute("employee", departmentOptions);


    Employee theEmployee = new Employee();
            //how to add multiple objects?? doing this so when program return control to controller it will help me set the attribute of employees so I can save it into the database
    theModel.addAttribute("employee", theEmployee);


    return "customer-form";
}

Проблема: как добавить несколько атрибутов, например, объект сотрудникаи привязанную к моей модели хэш-карту, чтобы я мог предварительно заполнить поле выбора и одновременно иметь методы, доступные для моего контроллера, чтобы установить атрибуты для моего объекта сотрудника и сохранить в моей базе данных, когда я верну управление контроллеру?

Любая помощь будет оценена .. спасибо!

РЕДАКТИРОВАТЬ: просто обновление, каждый предоставленный ответ работает..i перепутал.

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Если я правильно понял (из комментария вашего кода)

// как добавить несколько объектов ?? делая это, чтобы я мог предварительно заполнить доступные для выбора отделы

Вы должны просто установить другое имя для каждого объекта в свой атрибут модели. В вашем коде вы дважды использовали одно и то же имя, поэтому объект departmentOptions employee будет заменен более поздним объектом employee. Чтобы преодолеть это, просто установите их уникальное имя, и вы можете отправить список объектов или другой объект одного типа, например:

// добавление нескольких объектов в modelAttribute.

theModel.addAttribute("departmentOptions", departmentOptions);
Employee theEmployee = new Employee();         
theModel.addAttribute("employee", theEmployee);
-----
theModel.addAttribute("anotherObject", anotherObject);
0 голосов
/ 29 мая 2019

Вместо использования одного и того же ключа для добавления другого объекта используйте другой ключ для другого объекта, например:

//use key "departmentOptions" for LinkedHashMap
theModel.addAttribute("departmentOptions", departmentOptions);

Employee theEmployee = new Employee();
//use key "employee" for employee object
theModel.addAttribute("employee", theEmployee);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...