이는 front와 연결 짓기 위한 util파일이다.
간단히 설명하면, controller안에 있는 이름을 가져와서 javascript window.controllerName에 집어넣는다.
public class ControllerNameInterceptor extends HandlerInterceptorAdapter {
@Override
public void postHandle(HttpServletRequest request, @NonNull HttpServletResponse response,
Object handler, ModelAndView modelAndView) throws Exception {
super.postHandle(request, response, handler, modelAndView);
String controllerName = "";
String methodName = "";
if (handler instanceof HandlerMethod) {
HandlerMethod handlerMethod = (HandlerMethod) handler;
controllerName = handlerMethod.getBeanType().getSimpleName().replace("Controller", "");
methodName = handlerMethod.getMethod().getName();
}
String queryString = request.getQueryString() != null ? "?" + request.getQueryString() : "";
request.setAttribute("queryString", queryString);
request.setAttribute("controllerName", controllerName);
request.setAttribute("methodName", methodName);
}
}
위와 같이 util 폴더에 ControllerNameInterceptor.java파일을 만든다.
그 후 아래와 같이 front쪽 스크립트 필요한 곳에 넣어준다.
- fragments/head.html : 이 파일은 모든 css 파일들을 모아둔 파일이다.
<script th:inline="javascript">
/*<![CDATA[*/
window.contextRoot = /*[[ @{/} ]]*/'/';
window.controllerName = /*[[ ${controllerName} ]]*/'';
const numberFormatter = Intl.NumberFormat('en-US');
/*]]>*/
</script>
- fragments/common-script.html : 이 파일은 모든 js 파일들을 모아둔 파일이다.
<script th:inline="javascript">
/*<![CDATA[*/
var controllerName = /*[[ ${controllerName} ]]*/'';
$(document).on('click', '.menu', function () {
window.controllerName = $(this).data('menuname');
});
let nav = $('#nav');
const nav_link = nav.children('a');
nav_link.each(function (index, el) {
if ($(el).data('menuname') === controllerName) {
$(el).addClass('active');
} else {
$(el).removeClass('active');
}
})
</script>
위의 코드와 같이 controllerName을 받아올 수 있다.
❗ 단, controller폴더 안 파일 이름 설정을 controllerName + Controller라고 정확하게 해줘야한다.
ex) HomeController라고 하면 controllerName은 Home이다! ❗
'Web > Spring' 카테고리의 다른 글
[ERROR] Pageable import (0) | 2021.08.02 |
---|---|
[ERROR] Querydsl import (0) | 2021.08.02 |
[배경] Querydsl (0) | 2021.07.28 |
[배경] JPA (0) | 2021.07.27 |
[배경] Maven (0) | 2021.07.27 |