[Thymeleaf] th:object, th:field 사용법
·
Server/Spring&Spring Boot
타임리프를 사용하기 위해, 여러 블로그들을 찾다 보면 th:object로 DTO에 값을 전달해 주는 코드를 많이 보게 되었다. 무작정 th:object에 PostMapping에서 @ModelAttribute에 name으로 지정된 값을 작성하면 빨간 줄이 뜨면서 에러가 발생하였다. th:object는 어떻게 사용할 수 있을까? Controller Controller에서 해당 View를 받아오는 @GetMapping이 된 웹서버에 th:object로 사용할 객체를 생성하여 Model로 저장해 주어야 th:object를 사용할 수 있다. @GetMapping("/writeForm") public String writeForm( @SessionAttribute(name = "loginUser", required..
[Thymeleaf] th:value와 th:field를 함께 쓰면 value는 무시된다.
·
Server/Spring&Spring Boot
게시글의 수정 파트를 제작하기 위해 아래와 같이 코드를 작성하였을 때, 제목 다음과 같이 value 명령이 진행되지 않고, 계속해서 placeholder의 값만 화면에 등장하였다. th:field의 값을 제거하고 나서야, 원하는 값이 반환되기 시작했는데 th:field는 HTML 태그의 id, name, value 속성을 자동으로 매핑시켜주는 역할을 하므로 value의 값을 무시하게 되는 것입니다. 결과 제목 참조 Tutorial: Thymeleaf + Spring Preface This tutorial explains how Thymeleaf can be integrated with the Spring Framework, especially (but not only) Spring MVC. Note th..
[Thymeleaf] @태그 안에 $태그 사용하기, Expression preprocessing(전처리) "__"(밑줄 2개)
·
Server/Spring&Spring Boot
다음과 같이 포스팅된 글을 카드로 표현하였다. 해당 카드를 누르면 포스팅된 글로 이동하려는 로직을 만들기 위해 카드 내부에서 a태그로 모두를 감쌌다. ... ... 다음과 같이 작성한 후 카드를 눌러보니 메서드를 사용하여 해당 번호를 받아오는 것이 아닌, ${list.getRecommendNo()}를 그대로 주소창에 옮기고 있었다. 이를 해결하기 위한 태그가 있으니 바로 __ (Expression preprocessing, 밑줄 2개)이다. Expression preprocessing 타임리프 공식 문서를 확인하게 되면 Expression preprocessing부분에서 __에 대해 기능을 설명하고 있다. @{/recommends/${list.getRecommendNo()}} 위와 같이 @와 $의 표현식..
[Spring Boot] Spring에서 AWS S3에 파일 삭제 요청 보내기
·
Server/Spring&Spring Boot
이전글 [Spring Boot] AWS S3에 파일 업로드 IAM 사용자 생성 사용자 이름을 입력하고 다음으로 넘어갑니다. 검토 후 사용자를 생성합니다. 생성된 사용자에 들어가서 보안 자격 증명의 액세스키를 생성합니다. 체크박스에 체크 후 다음 버 chordplaylist.tistory.com Spring에서 S3로 삭제 요청 보내기 회원 정보의 이미지, 게시글에 들어가는 썸네일을 변경할 때 변경된 이미지가 다시 S3에 업로드된다. 업로드되면서 이전에 업로드되었던 이미지들이 그대로 남아있는 상태로, 처리하지 않는다면 점점 많은 수의 이미지가 누적될 것으로 예상되었다. 스프링에서 S3로 파일 업로드 요청이 가능했다면, 스프링에서 S3로 파일 삭제 요청이 가능하지 않을까? 이전글에서 작성한 S3FileUpl..
[Spring Boot] Spring Banner 변경해보기 (Spring boot run!)
·
Server/Spring&Spring Boot
프로젝트를 진행하던 도중, 이전에 우아한 테크의 10분 테코톡에서 스프링 배너를 변경했다는 게 떠올라서 나도 한 번 변경해 보기로 했다. Spring Banner를 변경하는 것은 매우. 매우! 쉽다!!! 다행이다! @SpringBootApplication이 달려있는 main Class를 찾아보자! MainController @SpringBootApplication public class ContentILikeApplication { public static void main(String[] args) { SpringApplication.run(ContentILikeApplication.class, args); } } MainController를 아래와 같이 수정하면 된다. 수정된 MainControlle..
[Junit] MultipartFile과 DTO가 있는 컨트롤러 테스트
·
Server/Spring&Spring Boot
기획상 게시물에 이미지를 업로드를 해야 하므로, S3를 구축하고 @RequestPart를 사용해서 이미지를 받아올 수 있게 Controller를 수정했다. Controller를 수정하고 난 뒤, 테스트 코드를 돌려봤더니 400 에러가 발생하고 있었다. 기존 Test code @Test @DisplayName("추천글 작성") void success_post_recommend_test() throws Exception { RecommendPostRequest request = new RecommendPostRequest("제목", "내용", "유튜브", 100L, 1L); RecommendPostResponse response = new RecommendPostResponse(1L, "제목", 100L);..
[Junit] 테스트 코드 할 때 가상의 Token 만들어주기
·
Server/Spring&Spring Boot
테스트 코드란 결국 가상의 상황을 제시해 주는 것. 사실 없어도 되고 아무런 문자열을 넣어줘도 무방하지만 이왕 JWT를 만들었는데 토큰을 넣어주는 상황을 가정하면 더욱 몰입할 수 있지 않을까. (사실 이런저런 문제 해결하다가 토큰이라도 만들어볼까 하다가 만들게 되었다.) ... class RecommendRestControllerTest { ... String jwtToken; @BeforeEach void getToken() { Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256); jwtToken = Jwts.builder() .setSubject("user") .setIssuer("issuer") .setExpiration(new Date(System.cu..
[Querydsl] Spring Boot 3.0 이상 Querydsl 세팅 gradle
·
Server/Spring&Spring Boot
build.gradle 설정 plugins { ... id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } ... dependencies { ... implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakart..
코드플리
'Server/Spring&Spring Boot' 카테고리의 글 목록 (2 Page)