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

В форме будут доступны раскрывающиеся опции для отделов, где список будет предварительно заполнен связанной хэш-картой, которая будет отправлена с контроллера

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

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

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";
}

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

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

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

-1
dian jin 29 Май 2019 в 07:26

2 ответа

Лучший ответ

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

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

Employee theEmployee = new Employee();
//use key "employee" for employee object
theModel.addAttribute("employee", theEmployee);
0
PrashantP 29 Май 2019 в 05:23

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

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

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

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

theModel.addAttribute("departmentOptions", departmentOptions);
Employee theEmployee = new Employee();         
theModel.addAttribute("employee", theEmployee);
-----
theModel.addAttribute("anotherObject", anotherObject);
0
user404 29 Май 2019 в 05:32