
표현식 안에 표현식을 사용할 때,즉, 표현식안에 동적 표현식을 사용하고자 할때 전처리 표현식을 사용합니다. 예를들어 Map의 키값을 동적으로 처리해서 get 한다던가,List 의 특정 값만 처리하기 위한 동적 조건을 건다던가,그럴 경우 표현식안에 표현식을 써야하는 상황이 생기는데, 이때 전처리표현식을 사용합니다. 사용방법은 아래와 같이 밑줄(_) 2개를 앞뒤로 붙여 사용해줍니다.__${표현식}__ 저는 주로 List 에 동적조건을 줘서 값을 구할때 사용했습니다. 예시.1 위 경우는 필드가 m1, m2, m3 ... m12 인 경우라서같은 문장을 12번 써줘야 하는걸 반복문으로 돌린 경우 입니다. 각 열의 합을 구하기 위해 thymeleaf 에서 처리했습니다. 예시.2 위 경우는 날..

최근 thymeleaf 로 통계 데이터를 뿌려주는 과정에서 일부 데이터를 직접 thymeleaf 구문에서 가공을 한적이 있는데데이터형에 대한 의문이 생겨 남겨본다. 내가 의문을 가지게 된 부분은 나눗셈을 하여 백분율을 구하는 부분이었는데 보통 위 구문처럼 value 라는 필드가 int 형이라는 가정하에*1.0 을 곱해주어 실수(double) 형을 만들고 나누었을때 rate 값은 생각대로 0.83333333333 의 소숫점 실수형으로 계산되어numbers.formatPercent 를 사용하면 83.3% 라는 예쁜 백분율이 작성되었었다. 그래서 합산값의 백분율을 구하기 위해서 위의 코드처럼 동일하게 *1.0 을 해주고 나눴으나 ... 소수점 둘째자리에서 강제 반올림을 해버리는 현상을 발..

[thymeleaf] Expression Utility 로 데이터 백분율 row 추가하기.통계 집계한 데이터를 조회하여 table 에 그려주는 과정에서중간중간마다 데이터 백분율을 작성해 주고 싶었다. thymeleaf each 를 사용해서 조회한 데이터를 아래와 같이 그렸다. 구분1월2월jong-bae.tistory.com 이전 포스트에서 thymeleaf 로 데이터 테이블을 가공해서 뷰에 그려줬는데이번엔 검색 필터로 조회할때마다 값을 비동기적으로 업데이트 하고자 했다. 일반적으로는 ajax 나 fetch 를 사용해서 서버로 부터 값을 받아와성공 결과로직에서 갱신할 엘리먼트를 지우고 다시 그려주거나 했다. 간단한 엘리먼트 갱신은 문제 없으나화면에 요소가 많으면 매우 불편하다. 하지만 아래..

통계 집계한 데이터를 조회하여 table 에 그려주는 과정에서중간중간마다 데이터 백분율을 작성해 주고 싶었다. thymeleaf each 를 사용해서 조회한 데이터를 아래와 같이 그렸다. 구분1월2월3월4월5월6월7월8월9월10월11월12월합계접수 예약 실제로는 구분 앞에 대분류, 중분류가 더 있어서 위와 같은 형태가 여러개 그려지게 되는데접수/예약/(예약율)/접수/예약/(예약율)/... 이렇게 중분류가 바뀌는 시점에 예약율 행을 추가해주고 싶었다. 처음엔 서비스단에서 데이터 가공을 해서 위코드 그대로 쓸까 했으나thymeleaf 에서 해결 할 수 있지 않을까 싶어서 타임리프 유틸들을 조합해서 해결해 보았다. 접..

프로젝트의 결과물이 거의 나옴에 따라 운영서버에 배포해서 이것저것 보는 중에 이상하게 리소스파일들 (js, font, css ) 을 계속 로드해오는 것을 확인했다. 분명 로컬에서는 느끼지 못했던 현저한 속도저하를 느꼈다. 우씨 로컬에서도 느꼈으면 해결하고 배포했을 텐데... 뭐지 싶어 리소스들 response header 를 봤더니 cache-control이 죄다 no-store 로 되어있는 것이 아닌가... no-store 는 캐싱을 하지 않겠다 이기 때문에 매번 리소스를 로드하게 된다. 리소스 캐시컨트롤 설정은 여러방법이 있는데 나는 간단한 것을 좋아하여 application.yml 에 리소스 캐시 설정을 추가했다. spring: web: resources: cache: cachecontrol: no..

SpringBoot 에 h2 를 연결해서 JPA를 사용하는 기초 방법을 작성해본다. 사내에는 보통 구축된 DB가 있기 때문에 DB가 정해지지 않은 테스트 시 빼고는 잘 사용할 일이 없었는데 스터디하다가 연결하게 되어 남겨본다. 프로젝트 생성 IntelliJ 2023.3.4 를 사용하니까 이제 spring 프로젝트가 3버전으로 생성되어 jdk8 버전 프로젝트를 자동 생성할 수 없는 것 같다. 바꾸고 싶다면 상위버전으로 생성뒤에 다운그레이드 해야 할 듯 싶다? 다음으로 넘어가서 디펜던시를 추가하자 간단하게 필요한 녀석들만 추가해주고 프로젝트를 생성하자 아래와 같이 build.gradle 이 생성될 것이다. plugins { id 'java' id 'org.springframework.boot' version..