Две модели в форме Spring MVC - PullRequest
0 голосов
/ 03 октября 2018

Предположим, у меня есть модель пользователя:

@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?

Вопрос не повторяется, потому что я хотел знать, может ли «путь» обрабатывать иерархические атрибуты, а не как просто передать его.объект для просмотра.

1 Ответ

0 голосов
/ 04 октября 2018

Используйте вот так

<form:input type="text" path="profile.email"/>

И я не рекомендую вам передавать свою сущность на передний план, вместо этого используйте DTO для развязки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...