input 태그의 name 이 @RequestParam 의 변수명과 같아야 한다.
<form action="http://localhost:8080/gym/search/trainer/specialization" method="post">
<h1>Trainer Specialization</h1>
<label>Specialization1
<input type="text" name="specialization1">
</label>
<label>Specialization2
<input type="text" name="specialization2">
</label>
<input type="submit" value="전송">
</form>
postman 에서는 다음과 같이 사용할 수 있다.
@PostMapping("/gym/search/trainer/specialization")
public String trainerResultView(@RequestParam String specialization1, @RequestParam(required = false, defaultValue = "") String specialization2, Model model) throws Exception {
String[] specializations = new String[]{specialization1, specialization2};
List<TrainerViewDto> trainerList = gymSearchService.findByTrainerSpecialization(specializations);
model.addAttribute("trainerList", trainerList);
return "gym_search/trainerField";
}
get 요청에서 url 의 특정 부분을 변수로 가져올 수 있다. 이를 통해 다양한 status 값에 대해 하나의 @GetMapping 으로 처리할 수 있다.
아래 예제는 오름/내림차순 uri 값을 통해 조정하여 값을 불러올 수 있다.
@GetMapping("/gym/search/review/{status}")
public String reviewResultView(@PathVariable String status, Model model) {
List<GymViewDto> gymList = gymSearchService.findByReviewRate(status);
model.addAttribute("gymList", gymList);
return "gym_search/gymRate";
}