Spring 7

[Spring] 다국어 처리 시 locale이 제대로 처리되지 않는 문제

문제 상황로그인 실패 이력을 보여주는 그리드에서 실패 사유를 다국어 처리하려고 했다.최초에는 jqGrid formatter에서 직접 다국어 처리를 시도:colModel:[ {name:'failReason', index:'failReason', width:300, align:"left", formatter: function(cellvalue){ // spring:message를 직접 사용하려 했으나 JavaScript에서는 불가능 return ''; // 작동 안함 } }] 알고보니 spring:message는 JSP 처리 단계에서 서버 사이드로 처리되고,formatter는 그 이후 클라이언트 사이드에서 실행되기 때문에 동작할 수..

[Java] zip4j 로 파일 암호화/복호화 스트림 처리

zip4j 라이브러리를 사용해서 파일을 암호화하고 stream으로 처리하는 방법 정리해봄! 0. 개발 환경Java 17Spring Bootzip4j 2.11.5 1. 라이브러리 의존성 추가 (Maven pom.xml) net.lingala.zip4j zip4j 2.11.5   2. 파일 업로드 (암호화)zipParameters.setFileNameInZip(zip파일 내부에 저장될 원본파일명) 꼭 지정해줘야함!!public void encryptAndSaveFile(MultipartFile file, String storePath, String password) throws Exception { // 저장 경로 생성 File saveFolder = new File(storePa..

개발노트/Java 2025.01.24

[Spring] jqGrid 데이터 연동 시 500에러 해결 (feat. @RequestBody)

⚠️ 오늘 발생한 문제들1. 데이터가 안 나오고 자꾸 "게시물이 없습니다" 뜸개발자도구 보니까 500 에러 발생원인: 컨트롤러에서 @RequestBody 때문이었음jqGrid는 form 데이터로 보내는데, 컨트롤러는 JSON만 받으려고 해서 충돌// 이렇게 했다가 실패@RequestBody BoardVO boardVO // JSON만 받으려고 함// 이렇게 수정하니까 됨BoardVO boardVO // 그냥 일반 파라미터로 받기   2. 데이터는 오는데 화면에 안 보임서버 로그 찍어보니 데이터는 잘 나오는데 화면에서 안 보임원인: jqGrid는 rows라는 키로 데이터를 찾는데, 서버는 list로 보내고 있었음// 서버에서 보내는 데이터{ "list": [ { "..

[Spring] selectByPk 메서드

1. Primary Key로 조회하기기본 문법은 간단:User user = userMapper.selectByPk(userId);근데 이렇게만 쓰면 NullPointerException 위험이 있음. 항상 null 체크 해주자. // 내가 자주 쓰는 패턴User user = userMapper.selectByPk(userId);if (user == null) { throw new EntityNotFoundException("해당 유저 없음");}  2. MyBatis vs JPA 차이점MyBatis 쓸 때:@Mapperpublic interface UserMapper { @Select("SELECT * FROM users WHERE user_id = #{userId}") User sele..

개발노트/Spring 2025.01.10

[Spring] 폼 처리와 다국어 정리

1. Spring message 처리 alert("저장되었습니다."); // 하드코딩된 메시지alert('');alert(''); 실수한 것들:jsp 파일에서 스크립트 분리할 때 message 처리// 방법 1: 변수로 먼저 선언// 방법 2: 데이터 속성 활용'> 저장$('button').click(function() { alert($(this).data('msg'));});  2. Form Submit 처리처음에는 순수하게 했다가 실수함:// ❌ 이러면 validation 무시됨$("#searchFrm").submit();// ⭕ 이렇게 하자if($("#searchFrm")[0].checkValidity()) { // 1. action 설정 $("#searchFrm").attr..

개발노트/Spring 2025.01.09

[Spring] SiteMesh - decorators.xml로 공통 레이아웃 관리

decorators.xml 파일은 SiteMesh의 레이아웃 설정을 담당하는 핵심 파일이다. 1. 기본 구조 **/*.htm /exclude/* /*    2. 주요 설정 요소defaultdir레이아웃 JSP 파일들의 기본 경로모든 decorator의 기준 디렉토리가 됨excludesSiteMesh를 적용하지 않을 URL 패턴들팝업창이나 특수 페이지에서 자주 사용decoratorname: 레이아웃 식별자page: 실제 JSP 파일 위치pattern: 적용될 URL 패턴 3. 레이아웃 사용법 공통 헤더 공통 푸터  ✅ 메모레이아웃 파일 내에서 에 각 페이지의 내용이 주입된다.파일 이름은 반드시 decorators.xml이어야..

개발노트/Spring 2025.01.02