묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
검증1 복습할겸 editForm을 고치고 실행하는데 오류 납니다. 도와주세요.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 영한님이 영상에 addForm을 고친것 처럼, editForm을 고쳐서 수정에서 값이 없으면 에러를 출력하려고 했습니다. 그러나 대실패 입니다. 현재 실력으로는 어떻게 고쳐야 해야 하는지 몰라서 게시판에 도움을 요청합니다.혹시 힌트라도 주실수 있으신가요? v1컨트롤러 edit 고친것(add내용을 복사 붙여 놓기 한 다음 수정) editForm을 수정한 내용(addFrom 의 내용을 수정)오류 내용잘린 메시지Error resolving template [validation/v1/items/{itemId}/edit], template might not exist or might not be accessible by any of the configured Template Resolvers Error resolving template [validation/v1/items/{itemId}/edit], template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause (그 외의 것들은 전혀 건들지 않았음)힌트를 주실 분 계신가요? 답변 부탁 드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
postman으로 /request-body-json-v1 호출시 500 error
Json형태의 request 에서 아래 예제 그대로 진행했는데, 자꾸 500 error가 나와서요java 24, springboot 2.5.5@Slf4j @Controller public class RequestBodyJsonController { private ObjectMapper objectMapper = new ObjectMapper(); @PostMapping("/request-body-json-v1") public void requestBodyJsonV1(HttpServletRequest request, HttpServletResponse response) throws IOException { ServletInputStream inputStream = request.getInputStream(); String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); log.info("messageBody={}", messageBody); HelloData helloData = objectMapper.readValue(messageBody, HelloData.class); log.info("username={}, age={}", helloData.getUsername(), helloData.getAge()); response.getWriter().write("ok"); } } [postman] 수행결과{ "timestamp": "2025-08-24T05:03:39.632+00:00", "status": 500, "error": "Internal Server Error", "path": "/request-body-json-v1" } [인텔리제이 로그]2025-08-24T14:03:39.540+09:00 INFO 6552 --- [springmvc] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'2025-08-24T14:03:39.541+09:00 INFO 6552 --- [springmvc] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms2025-08-24T14:03:39.570+09:00 INFO 6552 --- [springmvc] [nio-8080-exec-1] h.s.b.request.RequestBodyJsonController : messageBody={"usernsme":"aaa", "age":20}2025-08-24T14:03:39.620+09:00 ERROR 6552 --- [springmvc] [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exceptioncom.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "usernsme" (class hello.springmvc.basic.HelloData), not marked as ignorable (2 known properties: "username", "age"]) at [Source: REDACTED StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION disabled); line: 1, column: 14] (through reference chain: hello.springmvc.basic.HelloData["usernsme"]) at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) ~[jackson-databind-2.19.2.jar:2.19.2] at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1180) ~[jackson-databind-2.19.2.jar:2.19.2] at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2244) ~[jackson-databind-2.19.2.jar:2.19.2] at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1823) ~[jackson-databind-2.19.2.jar:2.19.2] at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1801) ~[jackson-databind-2.19.2.jar:2.19.2] at
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프론트엔드와 백엔드의 mvc, rest api에 대한 질문
REST API로 서비스를 설계할 경우, 사용자는 보통 프론트엔드를 통해 백엔드의 기능을 이용하게 됩니다. 이때 프론트엔드와 백엔드 각각에 MVC 패턴이 적용된다고 보아야 할까요, 아니면 두 계층을 합쳐 하나의 MVC로 이해해야 할까요? 또한 백엔드 측의 API를 Open API 형태로 외부에 공개한다면, 이것도 뷰로 간주할 수 있는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
build gradle
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]build.gradle 이렇게 하면 되는건가요?옆에 주석을 써봤는데 제가 이해한게 맞나요?plugins { id 'java' id 'org.springframework.boot' version '3.5.4' id 'io.spring.dependency-management' version '1.1.7' } group = 'hello' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' // 추가 여기부터 implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.1' // SQL 쿼리를 로그로 찍어주는 라이브러리. 개발할 때 DB에서 어떤 쿼리가 실제로 나가는지 확인하기 위함. runtimeOnly 'com.h2database:h2' // H2 DB (인메모리 DB) 사용. 개발이나 테스트용으로 DB 서버 없이 DB를 돌릴 때 편리. // lombok 관련 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' // querydsl 추가 implementation 'com.querydsl:querydsl-jpa:9.8:jakarta' // QueryDSL JPA 핵심 라이브러리 annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" // 엔티티로부터 Q클래스 자동 생성 annotationProcessor "jakarta.annotation:jakarta.annotation-api" // 컴파일 시 필요한 annotationProcessor "jakarta.persistence:jakarta.persistence-api" // Jakarta EE API // 여기까지 // test lombok testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } // 중괄호 추가 testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() } // 추가 clean { delete file('src/main/generated') }
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문
안녕하세요, 강의를 들으면서 궁금한 점이 있어 질문드립니다.강의에서는 모델을 컨트롤러와 뷰 사이에서 데이터를 전달하는 객체로 설명하면서, 컨트롤러는 비즈니스 로직을 직접 수행하기보다는 서비스와 리포지토리에 이를 위임해야 한다고 말씀해주셨습니다.그런데 제가 기존에 알고 있던 개념은 조금 달랐습니다. 모델은 일반적으로 데이터베이스의 테이블을 표현하고, 컨트롤러가 요청을 받아 모델에 명령을 내리면, 모델이 데이터를 조작하거나 비즈니스 로직을 처리한 뒤 컨트롤러와 뷰에 변화를 알리는 구조라고 이해하고 있었습니다. 즉, 모델이 도메인 객체(DTO, 엔티티 등)와 함께 비즈니스 로직, 그리고 DB와의 실질적인 연결까지 담당한다고 생각해왔습니다.따라서 강의에서 제시해주신 설명과 제가 알고 있던 개념 사이에 차이가 있는 것 같아 혼란스럽습니다. 혹시 제가 기존에 이해했던 방식이 잘못된 것인지, 아니면 단순히 접근 방식과 관점의 차이라고 봐야 하는지 조언 부탁드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원가입 테스트 중 빈값 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 현재 강의 8분쯤, 회원가입 테스트 할때 "이미 존재하는 회원입니다"를 방지 하기 위해 delete from member; 이후에 정상 작동 되어야 하는데, 오류가 나는 상황입니다. 회원가입 테스트 함수 내에,join 함수 실행 후에, findOne(saveId) 에서 빈값으로 확인됩니다.saveId 의 경우엔 테스트 할때마다 시퀀스가 올라서 11, 12, ... 가 확인됩니다. select * from member; 시에 빈값이고,join(member)가 정상으로 됬기 떄문에 saveId값이 오르고 있는것 같은데,findOne에서 빈값이라고 하니 get()할 값이 없어서 오류가 나는것 같은데,진도를 나가기 위해 어떻게 수정해야 할까요 ? join이 정상실행 됬다는 확인은 해당 소스 위 아래 sout "1" "2" 를 각각 붙였더니 정상 실행 되었고,findOne 위에 sout("3")까지 출력 됬지만, findOne 아래 sout("4")은 출력되지 않고 오류가 떴습니다. 그리고 오류를 찾아가기 위해, 확인하고 싶은 현 시점에 소스 상황입니다.MemberServcie 클래스에서 @Service 와빈 주입을 위한 @Autowired 는 주석처리가 되어 있는데 맞을까요 ? 12분 짜리 강의를 위해 3시간째 ㅠㅠ 버벅이고 있습니다. 도와주세요 ㅠㅠ혹시 제 질문이 부족했다면, 제가 답을 얻기위해 추가 질문이라도 부탁드립니다 ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 pc H2 실행 불가
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.H2 설치 및 삭제 여러차례 반복 및 구글링과 인프런에 등록된 F&Q 내용대로 해봐도 H2가 실행되지 않습니다.저거 두 개 다 실행해도 작동이 안 됩니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
console log 출력 관련 질문입니다.
수고 많으십니다.강사님이 하신 것처럼 application properties에서 동일한 메시지 레벨의 출력은 설정은 했는데 로그 메시지가 출력이 너무 달라요. initHandlerMappingMap내부의 URI가 "/front-controller/v3/members/new-form"으로 되어 있어서 실제로 html에 설정이 되어 있는 "/front-controller/v5/v3/members/new-form" 이거랑 달라서 오류가 떠야 하는데 브라우저 창에서는 404오류가 뜨면서 page not found가 뜨는데 로그메시지는 아무것도 출력되는것도 없고 GET 메시지도 안들어와요. 어떻게 하면 좋을까요? 제가 따로 서치를 해봤는데도 해결방법을 모르겠어서 질문해봅니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]Settings -> Build, Execution, Deployment -> Gradle에서 기존의 Gradle 둘 모두 IntelliJ IDEA로 변경한 후, SpringBootApplication이 실행되지 않습니다... 이유가 뭔지 궁금해서 이렇게 질문드립니다!아래 사진은 저의 인텔리제이 콘솔에 출력된 에러 로그 및 build.gradle 입니다. plugins { id 'java' id 'war' id 'org.springframework.boot' version '3.5.4' id 'io.spring.dependency-management' version '1.1.7' } group = 'hello' version = '0.0.1-SNAPSHOT' description = 'Demo project for Spring Boot' java { toolchain { languageVersion = JavaLanguageVersion.of(24) } } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() }
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
@EventListener(ApplicationReadyEvent.class) 관련
@EventListener(ApplicationReadyEvent.class)와 같은 기능을 사용하기 위해@Component public class DataInitializer implements ApplicationListener<ApplicationReadyEvent> 를 사용하여 프로젝트를 운영하고 있습니다.혹시 잘못된 것인지 궁금합니다.
-
해결됨처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
16강에 원래 있어야 할 강의 내용이 없고 23강 내용이 그대로 업로드 되어 있습니다.
16강에서 http 메서드에 대한 설명을 이어 나가야 하는데 실행하면 23강의 내용이 똑같이 나옵니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트 코드 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 김영한님 강의 중 스프링 입문 - 스프링 통합 테스트 부분에서 테스트 코드 돌리는 중 계속 tests were not found 란 에러가 발생하더라구요. 라이브러리, gradle 툴에서 gradle 다 설정했는데도 계속 저 에러 떠요... 2일 연속으로 해결 못해서 힘드네요. 도와주세요. 아래는 제 해당 내용의 깃입니다. https://github.com/bukwon/testcode
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
트랜잭션 동기화 매니저와 데이터 소스
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요, 수업 중 궁금한 점이 있어 질문 드립니다. 기본적으로 트랜잭션 동기화 매니저에서는 하나의 DataSource를 기준으로 하나의 Connection을 보관하는 것으로 알고 있습니다.강의의 예제는 동일 데이터소스에 대한 커넥션을 두개의 트랜잭션 매니저가 사용하는걸로 나와 있는 것 같습니다. 제가 궁금한건, 만약 외부 트랜잭션 매니저와 내부 트랜잭션 매니저가 서로 다른 데이터 소스를 참조하고 있다면 트랜잭션 동기화 매니저를 통해 서로 다른 커넥션을 참조하려고 할텐데,그래도 내부 트랜잭션이 외부 트랜잭션에 참여할 수 있나? 에 대해 궁금합니다. 감사합니다 :)
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Querydsl 부트 3.54 설정
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]build.gradle 코드 수정 자료를 보고 수정했는데 오류가 뜹니다. 제공해주신 자료의 버전과도 동일한 것은 아니라서 헷갈리는데 어떻게 해야 하나요?<build.gradle 수정한 코드>plugins { id 'java' id 'org.springframework.boot' version '3.5.4' id 'io.spring.dependency-management' version '1.1.7' } group = 'hello' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' //test 롬복 사용 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0' annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') } <오류 스크린샷>추가로인텔리제이 실행 중에 가끔 플러그인 같은 것을 추가하라는 제안 문구가 나오는데 제안을 받아들이는 것이 좋나요? 아니면 우선은 그냥 무시하는게 좋나요?리프레시 하면 가끔 네트워크에 접근하는걸 허용하겠는지 노트북 자체에서 주의 문구가 뜨는데, 이건 꼭 허용해야 하나요?? 그리고 왜 뜨나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트 코드 에러 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.김영한님 강의인 스프링 입문 중 스프링 통합 테스트 부분에서 intellij 개발 환경으로 테스트 코드 돌리려 하는데 'No tests were found' 라고 계속 뜨더라구요. 이유를 알 수 있을까요??참고로 build.gradle 파일 밑에 tasks.named('test') { useJUnitPlatform() }기재했고 settings - gradle 도구에서 build and run using, run tests using 둘 다 intellij 로 설정했습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
쿼리 스트링 또는 폼 데이터에서 멀티 값의 대한 스프링에서 처리해주는 방식
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]쿼리 스트링 또는 폼 데이터에서 멀티 값의 대한 스프링에서 처리해주는 방식에 대해서 궁금한 게 있습니다. [질문 1]멀티 체크(등록 지역)은 th:field를 List<String>으로 했기 때문에 아무것도 선택 하지 않았을 경우 서버로 hidden=on만 오기 떄문에 스프링에서 알아서 field 타입에 알맞은 빈 값 -> [ ]을 반환해주는 것이 맞나요?그렇다면 각 타입마다 스프링에서 빈 값을 매핑해주는 것이 어떻게 정리되어있나요? 사용자 객체를 th:field로 했다면 어떻게 되나요?만약에 실제 로직이 위의 물음과 같다면 아무것도 체크하지 않거나 하나만 체크했을 경우는 같은 이름의 키를 가진 값이 두 개 이상일수없을텐데 이 경우 어떻게 빈 배열이 아래 regions에 할당되는 것인가요?private List<String> regions [질문 2] <input type="checkbox" id="open" th:field="*{open}" th:value="true" class="form-check-input"> <input type="checkbox" th:field="*{regions}" th:value="${region.key}" class="form-check-input">위는 판매 여부, 아래는 등록 지역에서 사용된 코드 중 일부입니다.판매 여부에서 th:value를 생략한 이유는 th:field가 open, 즉 boolean타입으로 정의되어있어서 th:value의 기본 값이 자동으로 true로 되기 때문에 생략이 가능한것이라고 생각했습니다.때문에 등록 지역에서 th:value를 따로 region.key로 해준것은 field가 List<String>타입이니 value의 타입은 자연스럽게 String이 될것이고 boolean과 달리 String은 기본 value가 없어서 따로 구분할 value를 해줘야하기 때문에 각 checkbox마다 value를 region.key로 커스텀 등록 해준 것이 맞나요?[질문 3]등록 지역은 스프링이 값을 리스트로 바꿔줘 해주는데 이것은 th:field타입을 따라가서 그런가요?그리고 등록 지역의 여러 체크박스가 하나의 컬렉션(List<String>) 필드로 묶여서 바인딩되는 건 name 속성이 같기 때문인가요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
자바 스크립트에서 객체 변하는법 가르켜 준다고 하였는데, 안보여서 물어봅니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 가르쳐 주지 안으셔서 질문을 드립니다.자바 스크립트 코드에서<script>나머지 내용 생략....//객체 var user = [[${user}]];</script>객체 코드 오류를 없애는 법을 나중에 설명해준다고 하였는데요.(5:27-5:38)2번을 들어봤지만. 나오는 이야기가 없어서 요청을 합니다. 가르쳐 주시면 감사하겠습니다. 이렇게 요청을 한 이유는 영한님이 가르쳐 준다고 하였고, 자바 스크립트에서 이렇게 하신 이유가 있다고 생각해서 배워야 겠다는 생각이 들어서요.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
GlobalException 클래스 설정 관련 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요.영한님 강의를 듣고 한 가지 궁금한 점이 있습니다.강의에서 "보다 디테일한 예외가 잡힌다"고 설명해주셨는데,혹시 @Order(0) 설정을 하지 않으면 GlobalExceptionHandler에서만 예외가 처리가 잡히는데요,즉, 예외 처리 클래스를 여러 개로 분리했다면 @Order를 지정하지 않으면 세부 예외 처리 핸들러가 아닌 글로벌 핸들러로만 잡히는 이유가 클래스 분리 때문인지 궁금합니다. @RestControllerAdvice @Order(0) public class BoardExceptionHandler { /** * 게시판을 찾을 수 없을 때 발생하는 예외 처리 */ @ExceptionHandler(BoardNotFoundException.class) public ResponseEntity<ErrorResponse> handleBoardNotFound(BoardNotFoundException ex) { ErrorResponse response = ErrorResponse.builder() .code("BOARD_NOT_FOUND") .message(ex.getMessage()) .status(HttpStatus.NOT_FOUND.value()) .timestamp(LocalDateTime.now()) .details(Collections.singletonList("게시판 ID를 확인해주세요.")) .build(); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(response); } /** * 게시판 수정 / 삭제 권한이 없을 때 발생하는 예외 처리 */ @ExceptionHandler(BoardPermissionDeniedException.class) public ResponseEntity<ErrorResponse> handleBoardPermissionDenied(BoardPermissionDeniedException ex) { ErrorResponse response = ErrorResponse.builder() .code("BOARD_PERMISSION_DENIED") .message(ex.getMessage()) .status(HttpStatus.FORBIDDEN.value()) .timestamp(LocalDateTime.now()) .details(Collections.singletonList("해당 게시글에 대한 권한을 확인해주세요.")) .build(); return ResponseEntity.status(HttpStatus.FORBIDDEN).body(response); } }@RestControllerAdvice public class GlobalExceptionHandler { /** * 글로벌 예외 처리 */ @ExceptionHandler(Exception.class) public ResponseEntity<ErrorResponse> handleGenericException(Exception ex) { ErrorResponse response = ErrorResponse.builder() .code("INTERNAL_SERVER_ERROR") .message("서버에서 오류가 발생했습니다.") .status(HttpStatus.INTERNAL_SERVER_ERROR.value()) .timestamp(LocalDateTime.now()) .details(Collections.singletonList(ex.getClass().getName())) .build(); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response); } }
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:block th:each의다른 예가 없는지 궁금합니다.(지금의 예로는 사용하는 이유를 모르겠습니다.)
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. th:block이라는 태그를 통해 하는 것을 보았습니다. 근데 들으면서 이렇게 하면 th:block 없어도 될 것 같다는 생각이 들어서, 코드를 고쳐서 해보았습니다.이렇게 코드를 넣어봤고, 결과는 사진과 같이 똑같이 나왔습니다.(하나 추가 한게 무슨 이유인지 모르겠지만, 사용자 나이 밑에 br태그없이 span을 쓰면 붙여서 나와서 br태그를 씀) 그래서 솔직히 th:block 태그 보다는 div에 th를 넣고 아래에 방법 처 할것 같은데. th:block의 다른 예가 없는지 궁금합니다.답변 부탁 드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
400번대 에러 응답이 모두 404.html로 됩니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]1. resources/templates/error/4xx.html 만 존재할 때localhost:8080/error-404 -> 4xx.html 응답localhost:8080/error-400 -> 4xx.html 응답resources/templates/error/4xx.html, resources/templates/error/404.html 이 모두 존재할 때localhost:8080/error-404 -> 404.html 응답localhost:8080/error-400 -> 404.html 응답 -> 여기서 4xx.html이 응답해야하는거 아닌가요? 파일 경로에는 문제가 없는데 페이지 소스를 봐도 404.html이 맞습니다.