묻고 답해요
152만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
해결됨스프링과 JPA 기반 웹 애플리케이션 개발
지원중단
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. public class SecurityConfig extends WebSecurityConfigurerAdapter 에서 WebSecurityConfigurerAdapter 이게 지원중단이라떠서 더이상 진행이 불가능한데 어떻게 해결할 수 있나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
${#fields.Error()}
안녕하세요 선생님. 구글링을 해도 정보를 찾을수 없어 질문드립니다. 제가 하고싶은건 bindingResult를 통해 등록한 에러 메세지를 자바 스크립트에서 쓰고싶습니다. 아래와 같이 코드를 작성해봤고 여러가지 시도를 해보았으나 작동하지않습니다. controller (등록) bindingResult.reject("loginFail","아이디 또는 비밀번호가 맞지 않습니다."); html (작동하지 않는 코드) <script th:inline="javascript"> alert([[${#fields.errors('*')}]]);</script> 다음과 같은 경우는 잘 작동합니다. controller model.addAttribute("loginFail","아이디 또는 비밀번호가 맞지 않습니다."); html <script th:inline="javascript"> alert([[${loginFail}]]);</script> alert 정상출력. --------------- ${#fields.grobalErrors()} 관련 변수는 자바 스크립트에서 사용이 불가능한가요? 사실 model을 통하여 등록하면 된다지만 코드한줄 줄이고싶은 욕심에 몇시간 알아보다가 해결하지 못하여 이렇게 질문드립니다 ㅠㅠ..
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
똑같은 뷰를 반환하는데도 url에 따라 css가 다르게 적용 되는 이유
<div th:replace="/fragments/header.html :: fragment-header"></div> 이렇게 헤더, nav, 사이드바를 대체하고 있는데요 도메인/edit 에서는 잘 적용되던 html,css 들이 도메인/edit/1 등등 이렇게 구체적으로 들어가면 100% 똑같은 뷰를 반환해도 절대 적용이 안됩니다.. 5시간째 이유를 못찾고 있습니다 @GetMapping("/project/edit/1")public String Edit1(Model model){ //1번 return "editProject";}@GetMapping("/edit")public String Edit2(Model model){ //2번 return "editProject"; } 1번과 2번의 뷰가 각각 1. 2. 이렇게 나타납니다. 똑같은 뷰를 써도 저렇게 나오는 이유가 무엇인가요? Edit1(), Edit2()는 필수부분만 캡처한겁니다 똑같은 뷰를 반환하는데도 url에 따라 css가 다르게 적용 되는 이유가 무엇일까요?? 혼자서해보려했는데 너무 안되서 질문드립니다. --헤더 내부-- <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"> http://localhost:8080/project/edit/bootstrap/css/bootstrap.min.css 잘못된 css 경로 -< 이렇게 가네요 http://localhost:8080/bootstrap/css/bootstrap.min.css 가야하는 css 경로 빨간색 경로가 안붙게 하려면 어떻게 하나요?
-
해결됨스프링과 JPA 기반 웹 애플리케이션 개발
(응용) 프로젝트 진행 전 상수-Constants 구성 에 관한 질문입니다.
자주 쓰이고, 오타가 날법한 String 을 모아 아래 처럼 상수화 했습니다. 상수패키지 com.studyolle.core.constant.* 이후 Controller , Test 등에서 아래와 같이 사용중입니다. 질문입니다 Enum 으로 관리 하려고 했지만, 컨트롤러-핸들러 의 @GetMapping( Enum.URI.name() ) 과같은 선언도 불가능 하고, 단순 값 참조를 Enum .name() 이라던지, Enum .custom() 과 같이 덕지덕지 메서드가 붙게되어, 심플하게 하고자, Enum 은 사용하지 않았습니다. 그러나 이렇게 static final 필드로 관리하다보면, 언젠가 양이 많아 질탠데, 이럴 경우는 또다시 나누어야 될거라 생각이 듭니다만.. 이런 일반적인 방식 보다 효과적으로 관리하는 ( Map 을 쓴다던지, 특정 패턴이라던지) 방법이 있을까요? 상수 관리는 이런 방향이 괜찮았다.. 라는 사례가 궁금합니다. 읽어주셔서 감사합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
thymeleaf th:each 테이블에 새로운 object 넣고싶습니다.
테이블을 동적으로 만들고 싶어서 이것저것 하다가 질문드립니다... <html> each로 테이블을 구성하였고요 비동기 통신을 통해서 아래와 같은 object를 새로 받아왔습니다. 테이블 그리기 위해 넣는 orderGroupList > orderList가 있고요 페이징처리와 통신결과를 가져오는 paginVO, resultVO가 있습니다. 이러한 object를 현재 html에 구성된 each에 넣을 수 있는 어떤 방법이 있나요?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
여태껏 들었던 강의 중 가장 불친절 한 강의
이 분은 진짜 글을 남겨야겠네요. 기본 적으로 강의 할 때 목소리 톤이 최소한의 겸손이 안되어 있는 느낌. "이건 당연히 아셔야 해요", "찾아보셔야 해요" <-- 이런 말투들도 최대한 이해하려고 노력 했음. 근데 가관은 bootstrap 코드를 자기가 copy&paste 해서 옮기는데 화면에 보여주지도 않음. 그거 하나하나 보면서 sign-up.html 파일 내용 기입하고 있어서 힘들었는데... 질문 게시판 답변 보니...그제서야 거기서 자기 git의 commit check out해서 옮기라네...참... 아니 강의를 하면서 그 때 그 때 말을 해주든가.. 불친절하고, 내용도 그냥 다 알아야 하는 것들 혼자 한 번 적용해보는 느낌. 새로운 내용이 나오면 그 내용을 친절하게 알려주면서 강의 노트에 있는 것도 아니고.... 그냥 말로 대충 지나가듯이 설명.... 좀 겸손하지 않으신 듯 해요. 강사 자체가...
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문 목록 뷰에서 사용한 코드 관련 질문입니다.
강의를 다시 복습하면서 코드를 다시 유심히 보다가 발견하지 못한 부분을 발견해서 질문드립니다 주문 목록을 타임리프를 이용해서 뿌리는 코드는 다음과 같은데요 <tr th:each="item : ${orders}"> <td th:text="${item.id}"></td> <td th:text="${item.member.name}"></td> <td th:text="${item.orderItems[0].item.name}"></td> <td th:text="${item.orderItems[0].orderPrice}"></td> <td th:text="${item.orderItems[0].count}"></td> <td th:text="${item.status}"></td> <td th:text="${item.orderDate}"></td> <td> <a th:if="${item.status.name() == 'ORDER'}" href="#" th:href="'javascript:cancel('+${item.id}+')'" class="btn btn-danger">CANCEL</a> </td> </tr> 여기서 의문점이 Order와 Member는 다대일 관계이기 때문에 Order 리스트에 대해서 Order id와 Member 정보는 저렇게 출력하는게 가능한데 Order와 OrderItem은 1대다 관계인데 orderItems[0] 형태로 0 인덱스만 주었는데 출력이 되어있는데요 orderItems는 리스트인데 인덱스는 0만 주어서 출력하는 부분에서 타임리프 가이드를 보긴 했는데 이런 케이스에 대해서는 왜 이런식으로 코드가 나오는지 이해 안돼서 질문드립니다. 왜냐하면 저렇게 하면 하나의 Order에 대해서 Orderitem이 하나 밖에 나오지 않아서요 검증쿼리는 다음과 같이 던져서 검증 했구요 SELECT M.NAME, O.ORDER_ID, I.ORDER_PRICE, I.COUNT, IT.NAME FROM ORDERS O , ORDER_ITEM I , MEMBER M , ITEM IT WHERE 1=1 AND O.ORDER_ID = I.ORDER_ID AND M.MEMBER_ID = O.MEMBER_ID AND IT.ITEM_ID = I.ITEM_ID ORDER BY M.NAME ASC, O.ORDER_ID ASC, IT.NAME ASC, I.COUNT ASC 출력결과는 다음과 같습니다. 저런 상황이 발생하지 않도록 알맞게 처리하기 위해서는 view에 뿌려줄 수 있도록 적절한 DTO로 변환해서 뿌려줘야하는 것이 맞는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
thymeleaf를 사용할때 Controller와 RestController의 차이 질문이요
thymeleaf 템플릿을 사용할 때 @Controller 사용하면 String으로 반환해서 페이지로 이동하는데 @RestController를 사용하면 String으로 반환할 때페이지로 이동을 못합니다... 그 이유가 무엇이고 어떻게 해결하면 좋을까요? 참고로 hello.html은 templates에 있습니다.. @Controller public class PostController { @GetMapping("/test") public String Test(Model model){ model.addAttribute("data","테스트입니다."); return "hello"; } } 여기서 아래처럼 RestController를 사용하면 페이지를 이동못하고 hello만 반환한다. @RestController public class PostController { @GetMapping("/test") public String Test(Model model){ model.addAttribute("data","테스트입니다."); return "hello"; } } 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그인 처리 질문
타임리프를 이용해서 홈화면 html 헤더랑 푸터를 분리 시켜놨는데 그이후부터 로그인 사용자 이름 받아오는 model 값을 못 가져오는데 이경우에는 어떻게 해결해야하는지 알고싶습니다. <html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{fragments/layout}"> <head> <meta charset="UTF-8"> <title>Hi-End</title></head><body layout:fragment="content"> <h4 class="mb-3" th:text="|로그인: ${member.name}|">로그인 사용자 이름</h4>${member.name}이부분이 에러가 뜨면서 값을 가져오지 못합니다.헤더랑 푸터를 분리시킨걸 다시 합치면 model에 담긴 값을 잘 가져옵니다.분리 시킨 상태에서 model에 담은 값은 가져올수있는 방법이 없는건가요?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
조금 더 안전한 방법과 조금 더 개선한 방법의 차이
안녕하십니까 강사님 ! 질문있습니다 :) 조금 더 개선한 방법의 원리는 만약 인증이 들어왔을 때, Username 과 시리즈는 일치하지만 토큰이 일치하지 않으면 토큰이 해커에 의해 탈취되었다고 간주해서 모든 토큰을 삭제하는 원리인데, 조금 더 안전한 방법도 Username 은 일치하지만 토큰이 다르면 똑같이 탈취되었다고 간주하고 모든 토큰을 삭제하면 동일하게 동작하지 않을까 하는 궁금증이 생겼습니다. 전자랑 후자 방법 둘다 해싱에 패스워드는 사용되지 않아서 복호화 된다고해도 계정이 탈취당하는 일이 없는데 굳이 시리즈를 이용하는 이유가 있을까요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
thymeleaf message 사용 시 Cannot resolve property key 에러
안녕하세요 ! 강의에서는 Intellij thymeleaf message 사용 시 properties 파일과 연동 및 자동완성이 잘 되는데 저는 Cannot resolve property key 에러가 뜨고 message 파일과 연동이 잘 되지 않는 것 같습니다. 프로젝트 실행에는 이상이 없지만 강사님처럼 동작하게 하려면 따로 설정해야 하는 부분이 있을까요? 구글링해도 해결방법을 찾지 못 해 질문 남깁니다..! 감사합니다 !!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
thymeleaf 이미지 업로드시 재로딩 하지 않는 이상 이미지 출력이 안됩니다.
안녕하세요? 김영한 강사님! 질문이 있습니다. thymeleaf 로 페이지를 작성하고 파일을 업로드 하여 이미지 출력까지 해보려는데요 태그 <img th:src="@{${image}}"> 이런식으로 출력되게 했는데요. 이게 톰켓 재시작시는 업로드한 파일이 보이는데요 재시작 하지 않고 뷰페이지를 봤을때 엑박이 뜨는 상황입니다. 페이지를 리프레시 하여도 마찬가지로 엑박이 뜨고요.. 핫 리로드라는 것을 적용해 봤는데 마찬가지로 톰캣 재시작을 하지 않는 이상 엑박이 뜨는 상황입니다. 강사님!!! 도와주세요!!!! ^^;;; 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:inline은 왜 필요한건가요?
안녕하세요 항상 감사드립니다. unescaped 설명하실 때, span 태그 안에 th:inline를 넣는 이유가 궁금합니다. 구글링해보니 컨트롤러에서 입력된 데이터를 출력할 때 쓰는 것 같던데, 그동안 딱히 th:inline을 쓰지 않아도 잘 출력됐었고, 실제로 코드에서 th:inline="none"을 빼도 Hello Spring!이 문제없이 뜨는 것을 확인할 수 있었습니다. th:inline은 왜 쓰는건지 궁금합니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
thymeleaf syntax highlighting & code completion이 되지 않아요..
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] 선생님 안녕하세요, 항상 강의 잘 듣고 있습니다! 타임 리프 관련해서 질문이 있는데요..강의를 보면 타임리프 파일을 작성할 때 intellij에서 오류도 잡아주고 코드 추천도 해주는데, 갑자기 제 intellij에서 안 되기 시작했습니다 preferences에서 thymeleaf 플러그인을 검색해보니 'not loaded'라면서 'javascript and typescript'부터 enable하라는 안내 메시지가 있었습니다. javascript and typescript를 enable한 후에 thymeleaf plugin을 보니까 bundled, enabled로 잘 바뀌어 있었어요. (thymeleaf plugin은 default로 깔려서 enable되어 있다고 하더군요) 그런데도 아직도 thymeleaf 지원이 안 됩니다 ㅠㅠ 제 기억에는 타임리프 프로젝트를 처음부터 각자 만들었던 '타임리프-기본기능'에서는 이런 문제가 없었고, '타임리프 - 스프링 통합'부터 이 문제가 발생하기 시작한 것 같아요. 어떻게 해결할 수 있을까요? 감사합니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Error??
- 이렇게 빨간줄이 생겨서 ctrl+클릭을하면 controller로 갈 수가 없네요구글링하면 해결방법이 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://thymeleaf.org" lang="">하면 빨간줄만 없어지고 해결은 안되네요 방법이 없을까요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
thymeleaf관련
thymeleaf를 사용하다 의문점이 들어 질문을 남깁니다. 이 템플릿을 배우는 이유는 restapi상황에서 front와 back이 나눠져있는 상황에 지금 당장 front와 연결할 수 없을 때, 먼저 가상 시나리오를 실행시켜보기 위해서 알아야하는 템플릿을 익히는 것인가요 ??
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
윈도우에서 gradle로 빌드하시려는 분께 공유드립니다.
윈도우 환경에서 gradle로 빌드 하시려는 분들을 위해 공유 드립니다. 1. build.gradle dependencies { ... classpath "com.github.node-gradle:gradle-node-plugin:3.1.0" } classpath에 node-gradle 을 추가해 주시고 def preinstalledNodeDistributionDirectory = file("${projectDir}/src/main/resources/static/node") 이거 하나 선언해 주시고 apply plugin: "com.github.node-gradle.node" 위 플러그인 적용해주시면 node { version = '11.15.0' // 제가 사용중인 노드 버전을 적었습니다. download = true nodeModulesDir = file("${projectDir}/src/main/resources/static") } task copyFrontLib(type: Copy) { from "${projectDir}/src/main/resources/static" into "${projectDir}/build/resources/main/static/." } copyFrontLib.dependsOn npmInstall compileJava.dependsOn copyFrontLib 해당 코드를 추가하여 사용하시면 build시에 프런트 라이브러리들을 빌드에 추가하실 수 있습니다. 2. css 깨짐 현상 본 강의와 같이 부트스트랩을 사용하셔서 동일한 css를 적용시키려면 그냥 install bootstrap으로는 안되는것같습니다. 버전이 달라서 css 속성명이 달라졌나봐요... 그래서 만약에 build에 정상적으로 라이브러리 추가 되시는데 뷰가 어디가 좀 깨져서 나오시거나 css가 적용이 잘 안되시면 "dependencies": { "bootstrap": "^4.4.1", "jquery": "^3.4.1" } 선생님이 강의에서 사용하신 버전으로 명시적으로 바꾸어주셔야 합니다. 저렇게 적용하면 정상적으로 뷰가 나와요... 많이 해맸네요ㅜㅜ
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
선생님 안녕하세요
안녕하세요 제가 강의를 보고 공부하던도중 8:14분에 있는 정규식과 닉네임의 제출양식이 같아야하는부분에서 must match~라고 빨간 오류를 내주는 부분에서 저는 가입하기 버튼을 눌렀을때 오류를 내지않고 그냥 인덱스 페이지(/)로 그냥 정상적으로 보내버려서 오늘 하루동안 이 오류를 계속 잡고 있다가 디버깅, 코드 비교 5번, 인텔리제이 재설치 pom.xml 파일 똑같이 맞추기 별 방법을 해봐도 안됬는데 선생님께서 제공해주신 완성된 소스코드의 첫 커밋으로 체크아웃하여 스프링 버전을 선생님의 스프링 버전인 2.2.4에서 제가 강의를 들으며 직접 코드를 따라치던 스프링의 버전인 2.5.2로 변경을 하고나니 선생님꺼의 완성코드 프젝에서도 저런 must match오류 구문이 안나타나고 그냥 인덱스페이지로 이동을 시키는 현상이 똑같이 나타났습니다. 제가 이 현상을 보고 오류의 원인이 스프링 버전차이라고 확신을 하게되었는데요 제 인텔리버전은 21.2EAP버전입니다 근데 스프링 프젝을 처음만들때 2.2.4버전으로 만드는 탭이 아예없어서 앞으로 스프링 프젝을 2.5이상 버전으로 해야할거같은데 이런 버전차이때문에 나타나는 현상을 어떻게 해결할수 있을까요? 그리고 @Pattern 어노테이션 뿐만아니라 @Length어노테이션에도 min = 3, max = 5를 주고 5개를 훨씬넘게 입력을 했는데도 오류를 잡아주지않았습니다. P.S 제가 직접 보고 따라쳤던 타이핑버전의 소스코드를 그대로 선생님꺼 완성된프젝에 옮겨서 실행했는데 정상작동이 됬습니다. 이 말은 제가 타이핑친 소스코드에 정말 문제가 없다는 거여서 제가 버전차이의 문제라고 확신을 하게되었습니다. 아 그리고 EAP버전이여서도 아닌게 제가 재설치를 하기전까지는 EAP버전이 아니였습니다. 긴글 읽어주셔서 정말 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
bookForm @NotEmpty 문의 드립니다.
강사님 안녕하세요. memberController 부분은 강사님께서 강의해서 해 주신대로 @NotEmpty가 잘 동작 하였고 itemController 에서 item을 생성할 때에도 member와 동일하게 @Valid 체크를 넣어주려고 했습니다. 일단 지금 매핑되는 문제가 있습니다 ㅜㅜ 이러한 에러가 뜨고 있습니다. An error happened during template parsing (template: "class path resource [templates/items/createItemForm.html]") 폴더와 html은 정확하게 들어가있습니다. bookForm에 @NotEmpty를 넣은 부분입니다. 컨트롤러 화면 입니다. 디렉토리와 타임리스 화면 입니다 memberList를 참조하여서 추가 하였으며, memberList에는 acation ="@{/ }" 이러한 골뱅이 표시와 중괄호가 없었으므로 동일하게 테스트를 해보아도 An error happened during template parsing (template: "class path resource [templates/items/createItemForm.html]") 동일하게 에러가 뜨는것 같습니다. member부분에서는 잘 작동하는데, item에서 동작하지 않는 부분이 궁금합니다 ㅠㅠ 제가 무엇인가 놓친 부분이 있는것 같습니다. 좋은 강의 항상 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
타임리프 문법
안녕하세요 강의 잘 보고있습니다 질문 하나만 하겠습니다. 상품 수정 링크 -> th:onclick="|location.href='@{/basic/items/{itemId}/edit(itemId=${item.id})}'|" 를 th:onclick="|location.href='@{/basic/items/{item.id}/edit}'|" 로는 쓸수가 없는건가요 ?? ------------------------------------------------- 앞의 회원id 상품명 링크는 th:href="@{/basic/items/{itemId}(itemId=${item.id})}" th:text="${item.id}"> - > th:href="@{|/basic/items/${item.id}|}" th:text="${item.itemName}"> 처럼이요...
주간 인기글
순위 정보를
불러오고 있어요