Controller(+ @Valid)
2729 ワード
コントローラコントローラ:Webレイヤ、クライアントリクエストを受信する部分
@ValidでMemberFormを検証します.@Validプレゼンテーションがある場合は、@NotEmpty、@NotBlankなどのメンバーフォームに添付されているプロパティを確認し、プレゼンテーションに満足していることを確認します.気に入らない場合は、BindingResultにerrorが含まれます.BindingResultをclientに送信してエラーを表示できます.
この例では、MemberFormのnameに@NotEmptyがあり、クライアントが送信したフォームデータにname値がない場合、エラーはBindingResultに表示され、クライアントに送信され、「メンバー名が必要」というメッセージが表示されます.マウントできます.
(検証値の方法は様々ですが、詳細については、前に学習したSpring MVC 2のvalidationを参照してください.https://github.com/k-ms1998/Spring-studies)
MemberController
@Controller
@RequiredArgsConstructor
public class MemberController {
private final MemberService memberService;
@GetMapping("/members/new")
public String createForm(Model model) {
model.addAttribute("memberForm", new MemberForm());
return "members/createMemberForm"; // templates/members/createMemberForm.html 랜더링
}
@PostMapping("/members/new")
public String saveForm(@Valid MemberForm memberForm, BindingResult result) {
/**
* 1. @Valid를 통해 오류가 없는 지 확인 -> ex: MembeForm에서 name을 필수이므로 @NotEmpty 애노테이션 추가하고, name의 값이 empty인지 아닌지 확인
* 2. If name이 emtpy이면, @Valid에서 오류를 던짐 & BindingResult에 오류가 들어감
* 3. createMemberForm.html의 fields.hasError('name')에 오류 & message가 대입 됨
* (더 자세한 내용은 SpringMVC2 Validation 부분 참고)
*/
if (result.hasErrors()) {
return "members/createMemberForm";
}
Address address = new Address(memberForm.getCity(), memberForm.getStreet(), memberForm.getZipcode());
Member member = Member.createMember(memberForm.getName(), address);
memberService.join(member);
return "redirect:/"; // templates/members/createMemberForm.html 랜더링
}
@GetMapping("/members")
public String getMembers(Model model) {
List<Member> members = memberService.findMembers();
model.addAttribute("members", members);
return "members/memberList";
}
}
MemberForm
@Getter
@Setter
public class MemberForm {
@NotEmpty(message = "회원 이름은 필수 입니다.")
private String name;
private String city;
private String street;
private String zipcode;
}
クライアントが会員のフォームデータをサーバに送信すると、サーバはこれらのデータをMemberFormに格納して処理します.@ValidでMemberFormを検証します.@Validプレゼンテーションがある場合は、@NotEmpty、@NotBlankなどのメンバーフォームに添付されているプロパティを確認し、プレゼンテーションに満足していることを確認します.気に入らない場合は、BindingResultにerrorが含まれます.BindingResultをclientに送信してエラーを表示できます.
この例では、MemberFormのnameに@NotEmptyがあり、クライアントが送信したフォームデータにname値がない場合、エラーはBindingResultに表示され、クライアントに送信され、「メンバー名が必要」というメッセージが表示されます.マウントできます.
(検証値の方法は様々ですが、詳細については、前に学習したSpring MVC 2のvalidationを参照してください.https://github.com/k-ms1998/Spring-studies)
Reference
この問題について(Controller(+ @Valid)), 我々は、より多くの情報をここで見つけました https://velog.io/@k_ms1998/Controller-Validテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol