@PathVariable
똑같은 URL을 이용해 파라미터가 없을 경우에 타는 메소드와 파라미터가 있을 경우에 타는 메소드를 나누고 2개의 파라미터를 보내고 싶은 상황이었습니다. 정말 이상하게 2개의 파라미터를 보내는 것을 Controller 소스는 많이 있는데 thymeleaf 소스는 올리지 않은 블로그가 많아 애먹었습니다....
파라미터가 한개 일때 방법으로 밑에 방법이 그나마 소개 되었는데 저 방법을 이용해 2개의 파라미터를 보낼 수는 없었습니다.
<a href="/layout/diary/" th:attrappend="href=${year}" >
그래서 찾은 방법!!
<!-- 전년으로-->
<a class="cal-btn" th:href="@{|/layout/diary/diary/${year-1}/${month}|}" >
<i class="fas fa-caret-left double-arrow"></i>
<i class="fas fa-caret-left double-arrow"></i>
</a>
<!-- 전달로 -->
<a class="cal-btn" th:href="@{|/layout/diary/diary/${year}/${month-1}|}" >
<i class="fas fa-caret-left arrow"></i>
</a>
다른 코드는 볼 필요 없이 a태그에 th:href를 보면 될 것같습니다.
핵심은 @{ 에 | 로 한번더 감싸는 것 그리고 계산이 들어가야 되면 ${ } 괄호 안에서 할 것
이 방법을 못찾아서 정말 고민 많이 했습니다.... 하고 나면 너무 쉬운 건데....
밑에는 Controller 소스 입니다. 매핑하는 URL과 파라미터 부분만 참고하시면 될 것 같습니다.
@RequestMapping(value="/layout/diary/diary/{year}/{month}", method=RequestMethod.GET)
public ModelAndView openDiary(@PathVariable("year") int year, @PathVariable("month") int month, @AuthenticationPrincipal SecurityAccount account) throws Exception{
ModelAndView mv = new ModelAndView("/layout/diary/diary");
HashMap<String, Integer> date = diaryService.getDate(year, month);
mv.addObject("year", date.get("year"));
mv.addObject("month", date.get("month"));
mv.addObject("last_day", date.get("last_day"));
mv.addObject("ex_last_day", date.get("ex_last_day"));
if(account != null)
mv.addObject("Id", account.getUsername());
return mv;
}
반응형
'웹프로그래밍 > spring~~' 카테고리의 다른 글
GCP에 그레이들 설치 (0) | 2019.09.12 |
---|---|
Spring Dispatcher-Servlet이란? (0) | 2019.09.08 |
Spring Security에서 Ajax post 방식 사용할 때 (0) | 2019.08.31 |
form 태그의 th:action을 동적으로 바꾸는 방법 (0) | 2019.08.23 |
오류 : cannot find symbol (0) | 2019.08.13 |
Spring Security를 적용해보자(2) (0) | 2019.08.13 |
Spring security 적용해보자(1) (0) | 2019.08.12 |
Spring security CSRF 프로텍션 (0) | 2019.08.09 |