스프링 MVC를 사용하면 여러 엔티티의 속성을 가진 엔티티에 매핑되지 않는 양식을 어떻게 만들 수 있습니까?엔티티에 매핑되지 않는 폼 만들기
나는 또한 확인하고 오류 수집 등이의 모든 온라인 예제를 가지고 자신의 '결과'객체를 사용하려면
? 그것을 이해하는 데 필요합니다 (초보자)
스프링 MVC를 사용하면 여러 엔티티의 속성을 가진 엔티티에 매핑되지 않는 양식을 어떻게 만들 수 있습니까?엔티티에 매핑되지 않는 폼 만들기
나는 또한 확인하고 오류 수집 등이의 모든 온라인 예제를 가지고 자신의 '결과'객체를 사용하려면
? 그것을 이해하는 데 필요합니다 (초보자)
양식에 필요한 모든 속성을 포함하는 새 클래스를 만들고 양식의 모델 특성으로 사용하기 만하면됩니다. 수신 통화에서이 유형도 사용할 수 있습니다. Spring은 자동으로 속성을 바인딩합니다. JSR-303 유효성 검사 주석을 사용하는 것도 고려해야합니다.
일반적인 접근 방법은 GET 요청에서 양식지지 개체를 만들기 위해 필요한 모든 엔터티를로드하는 것입니다. 그런 다음 해당 양식 백업 객체를 모델에 넣습니다. POST/PUT 요청에서 실제 접촉 한 엔티티를 재구성해야합니다. 일반적으로 다시로드 한 다음 제출 된 새 부분 데이터를 적용합니다.
일반적으로 컨트롤러를 해당 코드로 오염시키지 않으면 서 조립 동작을 처리하는 전용 구성 요소를 만드는 것이 좋습니다.
/**
* Prepares the form by setting up a custom form backing object.
*/
@RequestMapping(value = "account/{id}", method = GET)
public String processGet(@PathVariable("id") Long id, Model model) {
Account account = accountService.getAccount(id);
return prepareForm(dtoAssembler.createFormFor(account), model);
}
/**
* Process form submission. Uses JSR-303 validation and explicit error
* handling.
*/
@RequestMapping(value = "account/{id}", method = PUT)
public String processGet(@ModelAttribute("accountForm") @Valid AccountForm form, Errors errors, Model model) {
if (errors.hasErrors()) {
return prepareForm(form, model);
}
Account account = accountService.getAccount(form.getId());
accountService.save(dtoAssembler.applyData(account, form));
return "redirect:/accounts";
}
/**
* Populates the given {@code Model} with the given {@code AccountForm}
* and returns the view to show the form.
*/
private String prepareForm(AccountForm form, Model model) {
model.addAttribute("accountForm", form);
return "account";
}
나는이 일을 어떻게 진행하고 있는지 여기에서 이렇게 썼습니다. 실제 시나리오에서는 아마도 DtoAssembler가 서비스에 대한 모든 작업을 수행하게 할 것입니다 (그래서 나는 어셈블러에 서비스를 주입 할 것입니다).
Dozer를 사용하여 DTO에서 도메인 객체로 데이터를 쉽게 전송할 수 있도록 BeanUtils 또는 이와 비슷한 것이 좋습니다.
그래서 get 요청에서 엔터티를로드 한 다음 폼 속성이 들어있는 클래스를로드합니다. 게시물에, 나는 무엇을 할 것인가? (아마도 작은 의사 코드일까요?) 감사합니다! – Blankman
내 의견과 관련하여 내 게시물이 업데이트되었습니다. :) –