월 66,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
mockMvs with 메서드 참조 관련
package com.example.studybin.account;import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.boot.test.mock.mockito.MockBean;import org.springframework.test.web.servlet.MockMvc;import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;//import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;//import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; @DisplayName("회원 가입 처리 - 입력값 오류")@Testvoid signUpSubmit_with_wrong_input() throws Exception { mockMvc.perform(post("/sign-up") .param("nickname", "soob") .param("email", "email...") .param("password", "12345")) .with(csrf()) .andExpect(status().isOk()) .andExpect(view().name("account/sign-up"));} 여기 post에서 with method를 찾을 수 없다고Cannot resolve method 'with' in 'ResultActions' 이렇게 뜨는데 어떻게 해결해야 할까요 해당 패키지는 import하고 있는데 왜 MockHttpServletRequestBuilder내에 있는 with를 참조 못할까요패키지 버전 문제 때문에 그런것 같은데 정확히 어떻게 바꿔줘야 할질 모르겠습니다.
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
bootstrap.min.css가 안 보입니다.
<link rel="stylesheet" href="/node_modules/bootstrap/dist/css/bootstrap.css" /> npm install bootstrap bootstrap.min.css 경로에 가봤는데, min.css만 없네요. 이런 경우에는 어떻게 해야 될까요 ???
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
로그인 요청 후 네트워크 기록에 대하여
삭제된 글입니다
- 미해결스프링과 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 기반 웹 애플리케이션 개발
기본 방식(lazy loading)으로 패치가 되지 않는 문제점
안녕하세요 기선님! 강의 내용을 복습하다가 의문점이 생겨서 질문 드립니다! @EntityGraph(value="Study.withAll", type = EntityGraph.EntityGraphType.LOAD)Study findByPath(String path) 이를 통해서 toMany로 끝나는 정보에 대해서는 study 를 조회하는 쿼리에서 한꺼번에 조인을 해서 가져왔었습니다. 그래서 이번에는 역으로 다시 @EntityGraph 를 제거하고 총 다섯번의 쿼리가 발생하는지 확인하였습니다. 애플리케이션도 실행해보고 디버거도 돌려본 결과 쿼리는 5번에 맞게 잘 조회를 하지만, manager 에 대해서는 Lazy Loading에 의해 패치 되지 않았습니다. ( zone 과 tag는 패치가 잘 되었습니다. 그리고 쿼리가 5번 발생한 것으로보아 기본 패치 형태로 Lazy loading도 잘 수행되는 것 같습니다) account_manager 조인 테이블도 확인한 결과 분명 관계는 설정이 잘 되어 있었는데, 이대로 패치가 되지 않았습니다. 혹시 이 두 관계에 대해서만 패치가 되지 않는 이유가 있을까요? @EntityGraph를 통해서 study와 함께 한번에 패치 받아올 때는 잘 받아졌습니다! 항상 좋은 강의 감사합니다 :)
- 미해결스프링과 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 기반 웹 애플리케이션 개발
세션의 데이터에 대해서 질문이 있습니다!
안녕하세요 기선님 강의 강의 항상 잘 듣고 있습니다. 결론적으로 말씀을 드리면 login(account);를 해주지 않아도 프로필상의 닉네임이 정상적으로 변경되는 것에 대한 질문 입니다! 우선 여기서 account 객체는 세션에서 가져온 데이터이고 detached 상태 입니다. 그래서 account.setNickname()을 통해서 세션에서 참조하는 사용자 데이터를 수정했고, accountRepository.save(account)를 통해서 변경 사항을 DB에 또한 merge 시켰습니다. 그렇기 때문에 login(account);를 해주지 않아도 세션의 account 데이터를 수정했기 때문에 변경사항은 반영 되었습니다. 그렇다면 기선님이 login(account); 를 호출해야한다고 말씀하셨던건 어떤 의미에서 말씀하신건지 생각을 해봤습니다. login(account) 메서드를 실행할 때 내부적으로 UserAccount를 생성하고, 그 과정에서 User 생성자에 인증 정보로 nickname과 password를 설정해주고 있습니다. 만약 기선님 말씀대로 login(account); 까지 실행을 해주면 새로운 인증 정보를 생성하니까 UserAccount 상위 클래스의 User 의 인증정보로 변경된 username(nickname)을 설정할 수 있게 됩니다. 하지만 제가 한 방식대로 login(account);를 실행하지 않으면 세션의 UserAccount 내부의 acocunt의 nickname은 변경되었지만, UserAccont의 User의 인증정보로 사용되는 username은 변경되지 않을 것입니다. 이러한 이유에서 새로 login() 메서드를 호출하셨다고 이해하면 되는 걸까요? 항상 질문에 대한 좋은 답변 감사합니다 :)
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
좋은 강의 만들어 주신 덕분에 지난 과제와 이번 과제 모두 혼자 할 수 있었습니다.
좋은 강의 내주셔서 정말 감사드립니다. 처음에는 내가 할 수 있을까 걱정했지만, 지난시간과 이번 시간에 내준 과제 모두 스스로 해결했습니다. 강의를 들으면 들을수록 제 자신이 성장하는게 느껴지네요. 특히 뷰 만드는것이 제일 힘들었는데, 강의 보면서 터득한 부트스트랩으로 도큐멘트를 보면서 만들어보니 재밌더군요, 과제 구현 중에 Subgraph라는 것을 말씀하셨는데, @EntityGraph(attributePaths = {"event", "event.study"})List<Enrollment> findByAccountAndAcceptedOrderByEnrolledAtDesc(Account account, boolean accepted); 이런식으로 해도 동작하더라구요. 그래도 이렇게 하는 것 보다 엔티티 도메인 클래스에 직접 명시해주는게 낫나요? 항상 좋은 강의 감사드립니다.
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
태그 저장과 삭제기능을 테스트코드로 작성해보려 했는데
MockMvc 에서 아무리 시도해도 400에러가 나네요. 구글링을 해봐도 제대로 된 글이 안나오더라구요. Ajax 통신은 어떻게 값을 넘겨주는지 질문 드려도 될까요 항상 좋은 강의 감사합니다.
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
Adaptor 패턴의 사용 (UserAccount)
안녕하세요 기선님! 어느덧 기선님의 강의를 다 들어보고, 다시 구체화하고 있네요. 항상 양질의 강의 감사합니다!! :) 기선님께서 @AuthenticationPrincipal 애노테이션을 통해서 authentication의 principal 정보를 가지고 올 수 있다고 하셨습니다! 그래서 저는 principal의 값으로는 닉네임 같은 String값을 사용하거나, 이외에는 UserDetails 인터페이스를 구현한 클래스( 여기서는 User 클래스를 상속받은 UserAccount)만 principal 정보로 사용가능한 것인가 생각을 했습니다. 여러 경우를 시도해보다가 위의 조건에 해당되지 않은 단순한 도메인 account 객체를 principal로 주고 @AuthenticationPrincipal을 통해서 바인딩을 받아보았는데, 인증이되지 않은 경우에는 null, 인증이 된 경우에는 해당 account 객체를 바인딩 받을 수 있었습니다. 마지막 결과는 인증하지 않았을때는 null, 인증이 되었을 때는 바인인 받은 acconut의 닉네임 값을 출력한 것입니다. UserAccount 패턴을 사용하지 않아도 동일한 결과를 얻을 수 있어서 질문을 드렸습니다!! 아니면 이렇게 principal로 도메인 클래스의 객체를 주는 방법이 정석적인 방법이 아닌걸까요? 감사합니다 :)
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
Distinct 안쓰고 튜닝 관련 질문입니다!
안녕하세요 선장님!좋은 강의 감사드리며, 계속 강의를 정주행중입니다. 벌서 끝이 얼마 안남았네요 ㅎㅎ 이번 강의중에 말씀하셨던 distinct 를 써도 실제 쿼리에서는 중복된 데이터가 나오지만 JPA가 내부적으로 해석을하고 엔티티에 데이터들을 초기화시켜주는 부분까지는 이해가 되었는데요. 그럼 프로젝션을 사용하여 로우한 쿼리를 만들어 한번 더 튜닝하는 방법이 있다고 말씀하신 부분을 사실 잘 이해가 안되어서 나중에 따로 공부해보려고 하는데요. 관련 자료를 조사해보려해도 키워드를 어떻게 잡아야 할지 잘 모르겠습니다 ㅠㅠ 말씀하신 부분에 대한 키워드만이라도 알려주시면 감사하겠습니다!!
- 해결됨스프링과 JPA 기반 웹 애플리케이션 개발
m1 맥 사용자분들 중에 gradle로 작성중인 분들 위해 남김니다.
./gradlew clean build 해보면 계속 오류날겁니다. build.gradle 에 가서 id 'org.siouan.frontend-jdk11' version '5.2.0'id "org.siouan.frontend" version "3.0.2" 추가해주시구요 frontend { nodeDistributionProvided = false nodeInstallDirectory = file("${projectDir}/src/main/resources/static/node") packageJsonDirectory = file("${projectDir}/src/main/resources/static") nodeVersion = '16.0.0' assembleScript = 'run build' cleanScript = 'run clean' checkScript = 'run check'} 다른 게시글 있는것 처럼 설정해주시면 됩니다. 단, nodeVersion 을 16.0.0 이상으로 해주셔야 할겁니다. 이전 버전들은 executino Exception 이 발생하구요. 16.0.0으로 맞춰주니 잘되네요. 그리고 package.json 파일에 scripts 항목에 꼭 이걸로 바꿔주세요. "scripts": { "build": "echo Building frontend", "check": "echo Checking frontend && npm run lint && npm run test", "clean": "echo Cleaning frontend", "lint": "echo Linting frontend", "test": "echo Testing frontend"} 이거때문에 2시간 날렸습니다. 다른분들은 저같은 일 없으시길 바랍니다 ㅠㅠ
- 해결됨스프링과 JPA 기반 웹 애플리케이션 개발
안녕하세요 선생님.
안녕하세요 선생님. 개인적으로 여쭤보고 싶은 점이 있어서 질문을 남깁니다. 따로 프로젝트를 진행중인데 회원가입 시 이메일 인증 토큰을 메일로 발송하도록 구현했습니다. 메일을 발송해주는 요청이 4초 정도 소요되는 것을 확인했습니다. 하나의 요청을 처리하는데 4초나 걸리는 상황에서 만약에 여러 사람들이 회원가입을 요청하면 다음 요청은 대기시간이 길어지고 결국 처리하지 못하는 상황이 생기지 않을까? , 일꾼을 늘려서 처리하면 어떨까?라는 생각을 하게 되었습니다. 그래서 이러한 상황에서도 강의에서 알려주신 eventPublisher + @Async + ThreadPoolTaskExecutor을 하나의 해결법?으로 사용할 수 있는지 여쭤보고 싶습니다. 정말 배울 점이 많은 강의라 여겨 여러 번 공부했고 강의에서 알려주신 내용을 통해 프로젝트를 진행하면서 해결할 수 있는 문제들이 정말 많았습니다. 감사합니다.
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
jar파일로 생성시
zoneService에서 자꾸 에러가 뜨는데 아마도 zones_kr.csv문제인것같은데 해결방법이 없을까요?
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
강사님 수고에 감사드립니다. 스터디 조회 할 때 한가지 궁금한 부분이 있어 질문드립니다.
안녕하세요. 수고가 많으십니다. 강의 너무 잘 듣고 있습니다. 그동안 흩어져있던 것들이 정리가 조금씩 되고 있어서 감사한 마음입니다. 강사님의 수고에 항상 감사드립니다. 60% 정도 현재 열심히 강의 수강 중에 왠만하면 질문을 안하려고 했었는데 해결이 안되는 부분이 있는데 도움이 너무 필요하여 적어봅니다. 강의 영상 : 스터디 조회 강사님께서 쿼리 여러번 나가는 부분을 1번이 나가도록 줄이는 부분이 있는데 강의 종료 부근처럼 @EntityGraph, //@NamedEntityGraph 를 작성했을 때는 1번만으로 잘 나가고 오류 메시지가 뜨지 않는데. 그 전에 쿼리가 여러번 나가는 부분으로 그대로 뒀을 때는 템플릿 오류가 납니다. isManager, isJoinable, isMember 를 타임리프에서 호출이 안되는 것 같습니다. 제가 어떤 부분을 놓쳤는지 아무리 해도 찾을 수가 없어서 이렇게 도움을 구해봅니다. 쿼리 여러 번 나갈 때는 왜 타임리프에서 호출이 계속 안되는지 좀 궁금해서요. 죄송하지만, 답변 좀 부탁 드리겠습니다. @EntityGraph, @NamedEntityGraph 를 주석처리했을 때 에러나는 부분을 첨부해드리겠습니다. 제가 놓친부분이나 있다면 도움 좀 구해봅니다. ■ StudyRepository.java @Transactional(readOnly = true) public interface StudyRepository extends JpaRepository<Study, Long> { boolean existsByPath(String path); // @EntityGraph(value = "Study.withAll", type = EntityGraph.EntityGraphType.LOAD) <----- 있을 때 쿼리 1번 정상, Study findByPath(String path); } ■ Study.java //@NamedEntityGraph(name = "Study.withAll", attributeNodes = { <---- 있을 때 쿼리 1번 정상 // @NamedAttributeNode("tags"), // @NamedAttributeNode("zones"), // @NamedAttributeNode("managers"), // @NamedAttributeNode("members")}) @Entity @Getter @Setter @EqualsAndHashCode(of = "id") @Builder @AllArgsConstructor @NoArgsConstructor public class Study { @Id @GeneratedValue private Long id; @ManyToMany private Set<Account> managers = new HashSet<>(); @ManyToMany private Set<Account> members = new HashSet<>(); @Column(unique = true) private String path; private String title; private String shortDescription; @Lob @Basic(fetch = FetchType.EAGER) private String fullDescription; @Lob @Basic(fetch = FetchType.EAGER) private String image; @ManyToMany private Set<Tag> tags = new HashSet<>(); @ManyToMany private Set<Zone> zones = new HashSet<>(); private LocalDateTime publishedDateTime; private LocalDateTime closedDateTime; private LocalDateTime recruitingUpdatedDateTime; private boolean recruiting; private boolean published; private boolean closed; private boolean useBanner; public void addManager(Account account) { this.managers.add(account); } public boolean isJoinable(UserAccount userAccount) { Account account = userAccount.getAccount(); return this.isPublished() && this.isRecruiting() && !this.members.contains(account) && !this.managers.contains(account); } public boolean isMember(UserAccount userAccount) { return this.members.contains(userAccount.getAccount()); } public boolean isManager(UserAccount userAccount) { return this.managers.contains(userAccount.getAccount()); } } ■ fragments.html(강사님 체크아웃 버전 그대로..) <div th:fragment="study-banner" th:if="${study.useBanner}" class="row" id="study-logo"> <img th:src="${study.image}"/> </div> <div th:fragment="study-info"> <div class="row pt-4 text-left justify-content-center bg-light"> <div class="col-6"> <a href="#" class="text-decoration-none" th:href="@{'/study/' + ${study.path}}"> <span class="h2" th:text="${study.title}">스터디 이름</span> </a> </div> <div class="col-4 text-right justify-content-end"> <span th:if="${!study.published}" class="d-inline-block" tabindex="0" data-toggle="tooltip" data-placement="bottom" title="스터디 공개 준비중"> <button class="btn btn-primary btn-sm" style="pointer-events: none;" type="button" disabled>DRAFT</button> </span> <span th:if="${study.closed}" class="d-inline-block" tabindex="0" data-toggle="tooltip" data-placement="bottom" title="스터디 종료함"> <button class="btn btn-primary btn-sm" style="pointer-events: none;" type="button" disabled>CLOSED</button> </span> <span th:if="${!study.recruiting}" class="d-inline-block ml-1" tabindex="0" data-toggle="tooltip" data-placement="bottom" title="팀원 모집중 아님"> <button class="btn btn-primary btn-sm" style="pointer-events: none;" type="button" disabled>OFF</button> </span> <span sec:authorize="isAuthenticated()" th:if="${study.isJoinable(#authentication.principal)}" class="btn-group" role="group" aria-label="Basic example"> <a class="btn btn-primary" th:href="@{'/study/' + ${study.path} + '/join'}"> 스터디 가입 </a> <a class="btn btn-outline-primary" th:href="@{'/study/' + ${study.path} + '/members'}" th:text="${study.members.size()}">1</a> </span> <span sec:authorize="isAuthenticated()" th:if="${!study.closed && study.isMember(#authentication.principal)}" class="btn-group" role="group"> <a class="btn btn-outline-warning" th:href="@{'/study/' + ${study.path} + '/leave'}"> 스터디 탈퇴 </a> <a class="btn btn-outline-primary" th:href="@{'/study/' + ${study.path} + '/members'}" th:text="${study.members.size()}">1</a> </span> <span sec:authorize="isAuthenticated()" th:if="${study.published && !study.closed && study.isManager(#authentication.principal)}"> <a class="btn btn-outline-primary" th:href="@{'/study/' + ${study.path} + '/new-event'}"> <i class="fa fa-plus"></i> 모임 만들기 </a> </span> </div> </div> <div class="row justify-content-center bg-light"> <div class="col-10"> <p class="lead" th:text="${study.shortDescription}"></p> </div> </div> <div class="row justify-content-center bg-light"> <div class="col-10"> <p> <span th:each="tag: ${study.tags}" class="font-weight-light text-monospace badge badge-pill badge-info mr-3"> <a th:href="@{'/search/tag/' + ${tag.title}}" class="text-decoration-none text-white"> <i class="fa fa-tag"></i> <span th:text="${tag.title}">Tag</span> </a> </span> <span th:each="zone: ${study.zones}" class="font-weight-light text-monospace badge badge-primary mr-3"> <a th:href="@{'/search/zone/' + ${zone.id}}" class="text-decoration-none text-white"> <i class="fa fa-globe"></i> <span th:text="${zone.localNameOfCity}">City</span> </a> </span> </p> </div> </div> </div> <div th:fragment="study-menu (studyMenu)" class="row px-3 justify-content-center bg-light"> <nav class="col-10 nav nav-tabs"> <a class="nav-item nav-link" href="#" th:classappend="${studyMenu == 'info'}? active" th:href="@{'/study/' + ${study.path}}"> <i class="fa fa-info-circle"></i> 소개 </a> <a class="nav-item nav-link" href="#" th:classappend="${studyMenu == 'members'}? active" th:href="@{'/study/' + ${study.path} + '/members'}"> <i class="fa fa-user"></i> 구성원 </a> <a class="nav-item nav-link" th:classappend="${studyMenu == 'events'}? active" href="#" th:href="@{'/study/' + ${study.path} + '/events'}"> <i class="fa fa-calendar"></i> 모임 </a> <a sec:authorize="isAuthenticated()" th:if="${study.isManager(#authentication.principal)}" class="nav-item nav-link" th:classappend="${studyMenu == 'settings'}? active" href="#" th:href="@{'/study/' + ${study.path} + '/settings/description'}"> <i class="fa fa-cog"></i> 설정 </a> </nav> </div> ■ 에러로그 2021-05-02 09:49:10.346 INFO 11260 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2021-05-02 09:49:10.347 INFO 11260 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2021-05-02 09:49:10.349 INFO 11260 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms 2021-05-02 09:49:10.465 DEBUG 11260 --- [nio-8080-exec-1] org.hibernate.SQL : select account0_.id as id1_0_, account0_.bio as bio2_0_, account0_.email as email3_0_, account0_.email_check_token as email_ch4_0_, account0_.email_check_token_generated_at as email_ch5_0_, account0_.email_verified as email_ve6_0_, account0_.joined_at as joined_a7_0_, account0_.location as location8_0_, account0_.nickname as nickname9_0_, account0_.occupation as occupat10_0_, account0_.password as passwor11_0_, account0_.profile_image as profile12_0_, account0_.study_created_by_email as study_c13_0_, account0_.study_created_by_web as study_c14_0_, account0_.study_enrollment_result_by_email as study_e15_0_, account0_.study_enrollment_result_by_web as study_e16_0_, account0_.study_updated_by_email as study_u17_0_, account0_.study_updated_by_web as study_u18_0_, account0_.url as url19_0_ from account account0_ where account0_.email=? 2021-05-02 09:49:10.468 TRACE 11260 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [맑은요정] 2021-05-02 09:49:10.475 DEBUG 11260 --- [nio-8080-exec-1] org.hibernate.SQL : select account0_.id as id1_0_, account0_.bio as bio2_0_, account0_.email as email3_0_, account0_.email_check_token as email_ch4_0_, account0_.email_check_token_generated_at as email_ch5_0_, account0_.email_verified as email_ve6_0_, account0_.joined_at as joined_a7_0_, account0_.location as location8_0_, account0_.nickname as nickname9_0_, account0_.occupation as occupat10_0_, account0_.password as passwor11_0_, account0_.profile_image as profile12_0_, account0_.study_created_by_email as study_c13_0_, account0_.study_created_by_web as study_c14_0_, account0_.study_enrollment_result_by_email as study_e15_0_, account0_.study_enrollment_result_by_web as study_e16_0_, account0_.study_updated_by_email as study_u17_0_, account0_.study_updated_by_web as study_u18_0_, account0_.url as url19_0_ from account account0_ where account0_.nickname=? 2021-05-02 09:49:10.475 TRACE 11260 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [맑은요정] 2021-05-02 09:49:10.690 DEBUG 11260 --- [nio-8080-exec-1] org.hibernate.SQL : select study0_.id as id1_4_, study0_.closed as closed2_4_, study0_.closed_date_time as closed_d3_4_, study0_.full_description as full_des4_4_, study0_.image as image5_4_, study0_.path as path6_4_, study0_.published as publishe7_4_, study0_.published_date_time as publishe8_4_, study0_.recruiting as recruiti9_4_, study0_.recruiting_updated_date_time as recruit10_4_, study0_.short_description as short_d11_4_, study0_.title as title12_4_, study0_.use_banner as use_ban13_4_ from study study0_ where study0_.path=? 2021-05-02 09:49:10.691 TRACE 11260 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [주식스터디] 2021-05-02 09:49:11.153 DEBUG 11260 --- [nio-8080-exec-1] org.hibernate.SQL : select members0_.study_id as study_id1_6_0_, members0_.members_id as members_2_6_0_, account1_.id as id1_0_1_, account1_.bio as bio2_0_1_, account1_.email as email3_0_1_, account1_.email_check_token as email_ch4_0_1_, account1_.email_check_token_generated_at as email_ch5_0_1_, account1_.email_verified as email_ve6_0_1_, account1_.joined_at as joined_a7_0_1_, account1_.location as location8_0_1_, account1_.nickname as nickname9_0_1_, account1_.occupation as occupat10_0_1_, account1_.password as passwor11_0_1_, account1_.profile_image as profile12_0_1_, account1_.study_created_by_email as study_c13_0_1_, account1_.study_created_by_web as study_c14_0_1_, account1_.study_enrollment_result_by_email as study_e15_0_1_, account1_.study_enrollment_result_by_web as study_e16_0_1_, account1_.study_updated_by_email as study_u17_0_1_, account1_.study_updated_by_web as study_u18_0_1_, account1_.url as url19_0_1_ from study_members members0_ inner join account account1_ on members0_.members_id=account1_.id where members0_.study_id=? 2021-05-02 09:49:11.156 TRACE 11260 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [92] 2021-05-02 09:49:11.172 DEBUG 11260 --- [nio-8080-exec-1] org.hibernate.SQL : select tags0_.study_id as study_id1_7_0_, tags0_.tags_id as tags_id2_7_0_, tag1_.id as id1_9_1_, tag1_.title as title2_9_1_ from study_tags tags0_ inner join tag tag1_ on tags0_.tags_id=tag1_.id where tags0_.study_id=? 2021-05-02 09:49:11.172 TRACE 11260 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [92] 2021-05-02 09:49:11.180 DEBUG 11260 --- [nio-8080-exec-1] org.hibernate.SQL : select zones0_.study_id as study_id1_8_0_, zones0_.zones_id as zones_id2_8_0_, zone1_.id as id1_10_1_, zone1_.city as city2_10_1_, zone1_.local_name_of_city as local_na3_10_1_, zone1_.province as province4_10_1_ from study_zones zones0_ inner join zone zone1_ on zones0_.zones_id=zone1_.id where zones0_.study_id=? 2021-05-02 09:49:11.180 TRACE 11260 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [92] 2021-05-02 09:49:11.193 DEBUG 11260 --- [nio-8080-exec-1] org.hibernate.SQL : select managers0_.study_id as study_id1_5_0_, managers0_.managers_id as managers2_5_0_, account1_.id as id1_0_1_, account1_.bio as bio2_0_1_, account1_.email as email3_0_1_, account1_.email_check_token as email_ch4_0_1_, account1_.email_check_token_generated_at as email_ch5_0_1_, account1_.email_verified as email_ve6_0_1_, account1_.joined_at as joined_a7_0_1_, account1_.location as location8_0_1_, account1_.nickname as nickname9_0_1_, account1_.occupation as occupat10_0_1_, account1_.password as passwor11_0_1_, account1_.profile_image as profile12_0_1_, account1_.study_created_by_email as study_c13_0_1_, account1_.study_created_by_web as study_c14_0_1_, account1_.study_enrollment_result_by_email as study_e15_0_1_, account1_.study_enrollment_result_by_web as study_e16_0_1_, account1_.study_updated_by_email as study_u17_0_1_, account1_.study_updated_by_web as study_u18_0_1_, account1_.url as url19_0_1_ from study_managers managers0_ inner join account account1_ on managers0_.managers_id=account1_.id where managers0_.study_id=? 2021-05-02 09:49:11.194 TRACE 11260 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [92] 2021-05-02 09:49:11.225 ERROR 11260 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-1] Exception processing template "study/view": An error happened during template parsing (template: "class path resource [templates/study/view.html]") org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/study/view.html]") at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:366) ~[thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:190) ~[thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1393) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1138) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1077) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.6.jar:5.3.6] at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) ~[tomcat-embed-core-9.0.45.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.6.jar:5.3.6] at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.45.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.45.jar:9.0.45] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:133) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:117) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) ~[spring-web-5.3.6.jar:5.3.6] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) ~[spring-web-5.3.6.jar:5.3.6] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.6.jar:5.3.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.6.jar:5.3.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.6.jar:5.3.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na] Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "study.isManager(#authentication.principal)" (template: "fragments.html" - line 245, col 46) at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupParser.parse(MarkupParser.java:257) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] ... 92 common frames omitted Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "study.isManager(#authentication.principal)" (template: "fragments.html" - line 245, col 46) at org.thymeleaf.spring5.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:292) ~[thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression(VariableExpression.java:166) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:66) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.expression.Expression.execute(Expression.java:109) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.expression.Expression.execute(Expression.java:138) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.expression.Expression.execute(Expression.java:125) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.processor.StandardIfTagProcessor.isVisible(StandardIfTagProcessor.java:59) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.processor.AbstractStandardConditionalVisibilityTagProcessor.doProcess(AbstractStandardConditionalVisibilityTagProcessor.java:61) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.Model.process(Model.java:282) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1587) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleOpenElementEnd(TemplateHandlerAdapterMarkupHandler.java:304) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleOpenElementEnd(InlinedOutputExpressionMarkupHandler.java:278) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleOpenElementEnd(OutputExpressionInlinePreProcessorHandler.java:186) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleOpenElementEnd(InlinedOutputExpressionMarkupHandler.java:124) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.attoparser.HtmlElement.handleOpenElementEnd(HtmlElement.java:109) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.HtmlMarkupHandler.handleOpenElementEnd(HtmlMarkupHandler.java:297) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupEventProcessorHandler.handleOpenElementEnd(MarkupEventProcessorHandler.java:402) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.ParsingElementMarkupUtil.parseOpenElement(ParsingElementMarkupUtil.java:159) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupParser.parseBuffer(MarkupParser.java:710) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:301) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] ... 94 common frames omitted Caused by: org.hibernate.HibernateException: Unable to access lob stream at org.hibernate.type.descriptor.java.DataHelper.extractString(DataHelper.java:270) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.descriptor.java.StringTypeDescriptor.wrap(StringTypeDescriptor.java:75) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.descriptor.java.StringTypeDescriptor.wrap(StringTypeDescriptor.java:22) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$1.doExtract(ClobTypeDescriptor.java:44) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:257) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:243) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:329) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:3059) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.loader.plan.exec.process.internal.EntityReferenceInitializerImpl.loadFromResultSet(EntityReferenceInitializerImpl.java:336) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.loader.plan.exec.process.internal.EntityReferenceInitializerImpl.hydrateEntityState(EntityReferenceInitializerImpl.java:263) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.readRow(AbstractRowReader.java:109) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.loader.plan.exec.process.internal.ResultSetProcessorImpl.extractResults(ResultSetProcessorImpl.java:124) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:105) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.loader.collection.plan.AbstractLoadPlanBasedCollectionInitializer.initialize(AbstractLoadPlanBasedCollectionInitializer.java:87) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:707) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:76) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:108) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:2145) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection$4.doWork(AbstractPersistentCollection.java:589) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:264) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:585) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:149) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection$3.doWork(AbstractPersistentCollection.java:341) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection$3.doWork(AbstractPersistentCollection.java:329) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:264) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection.readElementExistence(AbstractPersistentCollection.java:328) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.PersistentSet.contains(PersistentSet.java:179) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at com.jesustalk.domain.Study.isManager(Study.java:79) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na] at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:129) ~[spring-expression-5.3.6.jar:5.3.6] at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:139) ~[spring-expression-5.3.6.jar:5.3.6] at org.springframework.expression.spel.ast.MethodReference.access$000(MethodReference.java:55) ~[spring-expression-5.3.6.jar:5.3.6] at org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:387) ~[spring-expression-5.3.6.jar:5.3.6] at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:92) ~[spring-expression-5.3.6.jar:5.3.6] at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:112) ~[spring-expression-5.3.6.jar:5.3.6] at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:337) ~[spring-expression-5.3.6.jar:5.3.6] at org.thymeleaf.spring5.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:265) ~[thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE] ... 118 common frames omitted Caused by: org.postgresql.util.PSQLException: Large Objects may not be used in auto-commit mode. at org.postgresql.largeobject.LargeObjectManager.open(LargeObjectManager.java:243) ~[postgresql-42.2.19.jar:42.2.19] at org.postgresql.largeobject.LargeObjectManager.open(LargeObjectManager.java:229) ~[postgresql-42.2.19.jar:42.2.19] at org.postgresql.jdbc.AbstractBlobClob.getLo(AbstractBlobClob.java:272) ~[postgresql-42.2.19.jar:42.2.19] at org.postgresql.jdbc.AbstractBlobClob.getBinaryStream(AbstractBlobClob.java:117) ~[postgresql-42.2.19.jar:42.2.19] at org.postgresql.jdbc.PgClob.getCharacterStream(PgClob.java:54) ~[postgresql-42.2.19.jar:42.2.19] at org.hibernate.type.descriptor.java.DataHelper.extractString(DataHelper.java:263) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] ... 159 common frames omitted 2021-05-02 09:49:11.229 WARN 11260 --- [nio-8080-exec-1] o.h.e.loading.internal.LoadContexts : HHH000100: Fail-safe cleanup (collections) : org.hibernate.engine.loading.internal.CollectionLoadContext@2a05c91<rs=HikariProxyResultSet@190585382 wrapping org.postgresql.jdbc.PgResultSet@707f242d> 2021-05-02 09:49:11.229 WARN 11260 --- [nio-8080-exec-1] o.h.e.l.internal.CollectionLoadContext : HHH000160: On CollectionLoadContext#cleanup, localLoadingCollectionKeys contained [1] entries 2021-05-02 09:49:11.236 ERROR 11260 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/study/view.html]")] with root cause org.postgresql.util.PSQLException: Large Objects may not be used in auto-commit mode. at org.postgresql.largeobject.LargeObjectManager.open(LargeObjectManager.java:243) ~[postgresql-42.2.19.jar:42.2.19] at org.postgresql.largeobject.LargeObjectManager.open(LargeObjectManager.java:229) ~[postgresql-42.2.19.jar:42.2.19] at org.postgresql.jdbc.AbstractBlobClob.getLo(AbstractBlobClob.java:272) ~[postgresql-42.2.19.jar:42.2.19] at org.postgresql.jdbc.AbstractBlobClob.getBinaryStream(AbstractBlobClob.java:117) ~[postgresql-42.2.19.jar:42.2.19] at org.postgresql.jdbc.PgClob.getCharacterStream(PgClob.java:54) ~[postgresql-42.2.19.jar:42.2.19] at org.hibernate.type.descriptor.java.DataHelper.extractString(DataHelper.java:263) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.descriptor.java.StringTypeDescriptor.wrap(StringTypeDescriptor.java:75) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.descriptor.java.StringTypeDescriptor.wrap(StringTypeDescriptor.java:22) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$1.doExtract(ClobTypeDescriptor.java:44) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:257) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:243) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:329) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:3059) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.loader.plan.exec.process.internal.EntityReferenceInitializerImpl.loadFromResultSet(EntityReferenceInitializerImpl.java:336) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.loader.plan.exec.process.internal.EntityReferenceInitializerImpl.hydrateEntityState(EntityReferenceInitializerImpl.java:263) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.readRow(AbstractRowReader.java:109) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.loader.plan.exec.process.internal.ResultSetProcessorImpl.extractResults(ResultSetProcessorImpl.java:124) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:105) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.loader.collection.plan.AbstractLoadPlanBasedCollectionInitializer.initialize(AbstractLoadPlanBasedCollectionInitializer.java:87) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:707) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:76) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:108) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:2145) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection$4.doWork(AbstractPersistentCollection.java:589) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:264) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:585) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:149) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection$3.doWork(AbstractPersistentCollection.java:341) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection$3.doWork(AbstractPersistentCollection.java:329) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:264) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection.readElementExistence(AbstractPersistentCollection.java:328) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at org.hibernate.collection.internal.PersistentSet.contains(PersistentSet.java:179) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] at com.jesustalk.domain.Study.isManager(Study.java:79) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na] at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:129) ~[spring-expression-5.3.6.jar:5.3.6] at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:139) ~[spring-expression-5.3.6.jar:5.3.6] at org.springframework.expression.spel.ast.MethodReference.access$000(MethodReference.java:55) ~[spring-expression-5.3.6.jar:5.3.6] at org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:387) ~[spring-expression-5.3.6.jar:5.3.6] at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:92) ~[spring-expression-5.3.6.jar:5.3.6] at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:112) ~[spring-expression-5.3.6.jar:5.3.6] at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:337) ~[spring-expression-5.3.6.jar:5.3.6] at org.thymeleaf.spring5.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:265) ~[thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression(VariableExpression.java:166) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:66) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.expression.Expression.execute(Expression.java:109) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.expression.Expression.execute(Expression.java:138) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.expression.Expression.execute(Expression.java:125) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.processor.StandardIfTagProcessor.isVisible(StandardIfTagProcessor.java:59) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.processor.AbstractStandardConditionalVisibilityTagProcessor.doProcess(AbstractStandardConditionalVisibilityTagProcessor.java:61) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.Model.process(Model.java:282) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1587) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleOpenElementEnd(TemplateHandlerAdapterMarkupHandler.java:304) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleOpenElementEnd(InlinedOutputExpressionMarkupHandler.java:278) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleOpenElementEnd(OutputExpressionInlinePreProcessorHandler.java:186) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleOpenElementEnd(InlinedOutputExpressionMarkupHandler.java:124) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.attoparser.HtmlElement.handleOpenElementEnd(HtmlElement.java:109) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.HtmlMarkupHandler.handleOpenElementEnd(HtmlMarkupHandler.java:297) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupEventProcessorHandler.handleOpenElementEnd(MarkupEventProcessorHandler.java:402) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.ParsingElementMarkupUtil.parseOpenElement(ParsingElementMarkupUtil.java:159) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupParser.parseBuffer(MarkupParser.java:710) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:301) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupParser.parse(MarkupParser.java:257) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:366) ~[thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:190) ~[thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1393) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1138) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1077) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.6.jar:5.3.6] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.6.jar:5.3.6] at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) ~[tomcat-embed-core-9.0.45.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.6.jar:5.3.6] at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.45.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.45.jar:9.0.45] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:133) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:117) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) ~[spring-security-web-5.4.6.jar:5.4.6] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) ~[spring-web-5.3.6.jar:5.3.6] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) ~[spring-web-5.3.6.jar:5.3.6] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.6.jar:5.3.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.6.jar:5.3.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.6.jar:5.3.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.45.jar:9.0.45] at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na] 2021-05-02 09:49:11.262 ERROR 11260 --- [nio-8080-exec-1] s.e.ErrorMvcAutoConfiguration$StaticView : Cannot render error page for request [/study/%EC%A3%BC%EC%8B%9D%EC%8A%A4%ED%84%B0%EB%94%94] and exception [An error happened during template parsing (template: "class path resource [templates/study/view.html]")] as the response has already been committed. As a result, the response may have the wrong status code.
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
로그인 창 오류시 ?error 질문입니다.
삭제된 글입니다
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
메이븐말고 그래들로 만들어서하고싶은데
그래들로 만들어서 뷰를 그대로 넣고 따라하며 듣고있는데, 화면이 깨집니다. 기본 html은 나와서 사용이 가능한데, 흰화면에 html 밖에 안나오는데 해결방법이 없을까요??
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
질문있습니다.
안녕하세요! 4분 2초에 보면 updateEventForm과 updateEventSubmit 모두에서 studyService.getStudyToUpdate를 사용하신 부분에 대해 질문이 있습니다. 제가 고민해보기로는 event를 edit하는 것이기에 getStudyToUpdate로 study의 tags, zones, managers, members 모두를 땡겨올 필요 없이 현재 event를 수정하는 사람이 study의 매니저인지만 확인하면 되므로 getStudyToUpdateStatus로 managers 만 땡겨오면 되지 않나 하는 생각에 질문드립니다. 제가 놓친 부분이 있는 걸까요??
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
5:50초경 긁어온 html은 어디에 있나요...?
삭제된 글입니다
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
참가 신청 로직과 비슷한 구조 제작 중 이슈가 생겨서 도움 요청드립니다.
안녕하세요. 강사님!강의해주신 내용 중 Event-Enrollment 연관매핑되어 참가신청하는 로직을 참고하여 개발중에 있습니다. 저는 Shop과 Product 를 Event, Enrollment와 동일한 구조로 개발하였는데, Shop 엔티티에 매핑되어있는 products 에 add할 때 NullPointerException 을 발생시키네요. products에 new ArrayList<>(); 로 초기화도 시켜두었는데 에러 나는 이유가 무엇일지 알려주시면 감사하겠습니다!메인Runner 클래스에서 테스트한건데 그부분이 문제일까요?.. <강의 내 Event, Enrollment 관련 코드> -- Event.java @OneToMany(mappedBy = "event") @OrderBy("createdDate") private List<Enrollment> enrollments = new ArrayList<>(); // 생략 public void addEnrollment(Enrollment enrollment) { this.enrollments.add(enrollment); enrollment.setEvent(this); } -- Enrollment.java @ManyToOne private Event event; -- EventService.java public void newEnrollment(Account account, Event event) { if(enrollmentRepository.existsByEventAndAccount(event, account)) { throw new IllegalArgumentException("이미 참가 신청된 계정입니다."); } Enrollment enrollment = Enrollment.builder().account(account).build(); enrollmentRepository.save(enrollment); event.addEnrollment(enrollment); } <제 코드> -- Shop.java public class Shop extends CommonField { @Id @GeneratedValue private Long id; private String shopName; private String siteUrl; @OneToMany(mappedBy = "shop") @OrderBy("createdDate") private List<Product> products = new ArrayList<>(); public void addProduct(Product product) { this.products.add(product); // --> this.products에서 NullPointerException 발생!! product.setShop(this); } } -- Product.java public class Product extends CommonField { @Id @GeneratedValue private Long id; @Column(unique = true) private String productId; private String title; private String price; private String thumbUrl; private String detailUrl; @ManyToOne private Shop shop; } -- 테스트 코드 private void CrawlerTest() throws IOException { // 쇼핑몰 생성 Shop shop = Shop.builder().shopName("미스터스트리트").siteUrl("https://mr-s.co.kr/").build(); shopRepository.save(shop); Shop newshop = shopRepository.findByShopName(shop.getShopName()); // 최신 상품 목록 크롤링 Crawler crawler = new mrStreetCrawler(shop.getSiteUrl()); List<Product> products = crawler.run(); // 연관관계 설정 for(Product product : products) { product = productRepository.save(product); newshop.addProduct(product); // --> 에러 발생 } }