Допустим, у меня есть пользовательская модель:
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "user_profile_id")
private UserProfile profile;
Модель UserProfile:
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@Column(name = "email")
private String email;
@Column(name = "firstname")
private String firstname;
@Column(name = "lastname")
private String lastname;
Я могу добавить эту модель в контроллер:
@RequestMapping(value = {"/user/{id}"}, method = RequestMethod.GET)
public String showUser(ModelMap model, @PathVariable int id) {
User user = userService.findById(id);
model.addAttribute("user", user);
return "UserView";
}
Затем можно получить доступ к модели на странице .jsp следующим образом:
<form:form method = "POST" modelAttribute = "user">
<form:input type = "text" path = "username"/>
<form:input type = "password" path = "password"/>
</form>
Но вопрос в том - как я могу редактировать модель UserProfile, которая находится в модели User, в то же время, когда я редактирую модель пользователя, которая передается из контроллера на страницу .jsp?
Вопрос не повторяется, потому что я хотел знать, может ли «путь» обрабатывать иерархические атрибуты, но не как просто передать один объект для просмотра.
Верно. Вы хотите, чтобы HTML-форма могла также отправлять значения полей, например user.profile.emailAddress?
@dbreaux да, именно так
@ImpulseTheFox Я нажимаю кнопку добавления пользователя, открывается форма html с вводом имени пользователя и пароля. Но, как видите, у меня есть объект UserProfile в модели User. Он также имеет несколько полей, таких как: электронная почта, имя, фамилия. И я хочу редактировать эти поля одновременно с редактированием полей имени пользователя и пароля. Таким образом, на самом деле похоже, что в форме html есть 5 входов, два из которых относятся к модели User, а остальные 3 - к модели UserProfile, которая сама содержится в модели UserProfile.
Возможный дубликат Spring MVC - отправка объекта из JSP




Используйте как это
<form:input type = "text" path = "profile.email"/>
И я не рекомендую вам передавать свою сущность на передний план, вместо этого используйте DTO для развязки.
Да, это ^. атрибут path может использовать атрибуты иерархического компонента.
Пожалуйста, будьте яснее. Что вы хотите отредактировать? Во сколько? А что вы имеете в виду под словом «редактировать»?