묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
비교연산자 <,> 사용을 하지 않고, gt or lt 를 사용하는 이유?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]<li> 1>10 = <span th:text="10 < 1"></span></li>로 표현하여도, 비교연산자로 처리가 가능하였는데, 왜 gt나 lt 로 사용하여야 하나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
7. 스프링 MVC - 웹 페이지 만들기 > 상품 목록 페이지 th:onclick
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 김영한 강사님현재 진행중인 7. 스프링 MVC - 웹 페이지 만들기 강의 - 상품 목록 페이지 th:onclick 부분은 아래와 같이 작성되어 있고,<div class="row"> <div class="col"> <button class="btn btn-primary float-end" onclick="location.href='addForm.html'" th:onclick="|location.href='@{basic/items/add}'|" type="button">상품 등록 </button> </div> </div>컨트롤러의 상품 등록 부분도 예제와 동일하게 작성되어 있습니다.@Controller @RequestMapping("/basic/items") @RequiredArgsConstructor public class BasicItemController { private final ItemRepository itemRepository; ...(생략) @GetMapping("/add") public String addForm() { return "basic/addForm"; } }그런데 브라우저에서 등록 버튼을 누르면 /basic이 한 번 더 붙는데 이유가 궁금합니다.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
회원가입 성공 후 redirect이동시 권한 질문
19강을 듣고 있는데 문제가 생겨서 질문 드립니다@PostMapping("/sign-up") public String signUpSubmit( @ModelAttribute @Valid SignUpForm signUpForm, Errors errors if (errors.hasErrors()){ return "account/sign-up"; } Account account = accountService.processNewAccount(signUpForm); accountService.login(account); // 권한 : Authorities=[ROLE_USER] 반환 성공 log.info("@@@ 권한"+ SecurityContextHolder.getContext().getAuthentication().toString()); return "redirect:/"; } 리다이렉트 직전에 로그를 만들어 권한을 찍어보니 Granted Authorities=[ROLE_USER]가 반환되는데, 리다이렉트를 한 곳에서는 로그에 권한을 찍어보니 [ROLE_ANONYMOUS]라고 나옵니다ㅠ..문제를 알 수 있을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타임리프 템플릿 레이아웃 사용 시 js 안 됨
현재 스프링데이터JPA와 스프링 활용2에서 타임리프를 보며 개인 프로젝트를 진행하던 중 같은 main.html이지만 url이 다르면 js 코드가 적용이 안 되어 도움을 구합니다....user_search.js에서 UserSearchController에 url 매핑을 하여 return으로 그냥 다시 main.html을 호출하는 방식인데 안되네요... 어느 부분이 오류인지 못 찾겠습니다...https://drive.google.com/file/d/19zwAkqf9PijmfLiNzg8amCdJrJtvjsmA/view?usp=sharing
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
HtmlEmailService 개발하다 생긴 의문입니다
HTML 인증 메일 전송하기 쪽 개발중에 궁금한게 생겼는데요회원 가입후 링크로 인증쪽 url의 토큰 뒤에 & 가 붙더라구요검색해서 확인해보니 & 의 경우 서버 스크립트에서 처리할 때 & 로 변환한다고 하더라구요 그래서 왜 자꾸 & 로 변환 될까 찾던 찰나에HtmlEmailService의 sendEmail 메서드에서 mimeMessageHelper.setText( String text, boolean html) 의 두번째 인자값이 false로 설정되어 있어 & 값이 생겼었던 것입니다.메일의 context 도 html 소스가 문자열 그대로 나오고 html 형태로 나왔었구요.true 로 설정하니 원만히 해결 되었는데이유가 궁금합니다... setText 메서드를 타고 들어가면 htmlText 를 MimePart로 변환해주는 메서드가 있는데정확히 알고 싶습니다..혹은 해당 메서드를 보고 이와 같은 문제를 맞딱드렸을때 알아내는 방법이나 노하우 같은게 있을까요 ?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
postgreSql 연결하여 JPA 를 통해 테이블 생성시 ZONE 테이블 생성에서 에러가 납니다
2024-06-05 08:17:10.986 WARN 86324 --- [ main] o.h.t.s.i.ExceptionHandlerLoggedImpl : GenerationTarget encountered exception accepting command : Error executing DDL " create table zone ( id int8 not null, city varchar(255) not null, local_name_of_city varchar(255) not null, province varchar(255), primary key (id) )" via JDBC Statementorg.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table zone ( id int8 not null, city varchar(255) not null, local_name_of_city varchar(255) not null, province varchar(255), primary key (id) )" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:458) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:442) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:325) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:169) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:138) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:124) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:168) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:85) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:335) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.23.jar:5.3.23] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.23.jar:5.3.23] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.23.jar:5.3.23] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.23.jar:5.3.23] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[spring-context-5.3.23.jar:5.3.23] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) ~[spring-context-5.3.23.jar:5.3.23] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.23.jar:5.3.23] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.4.jar:2.7.4] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) ~[spring-boot-2.7.4.jar:2.7.4] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.4.jar:2.7.4] at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-2.7.4.jar:2.7.4] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.7.4.jar:2.7.4] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-2.7.4.jar:2.7.4] at com.studyolle.App.main(App.java:10) ~[main/:na]Caused by: org.postgresql.util.PSQLException: ERROR: permission denied for schema public Position: 19 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2675) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2365) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:355) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:490) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:408) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:329) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:315) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:291) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:286) ~[postgresql-42.3.7.jar:42.3.7] at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) ~[HikariCP-4.0.3.jar:na] at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[HikariCP-4.0.3.jar:na] at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] ... 34 common frames omittedHibernate:
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
수업질문 [긴급] 로그인안되는 문제 말씀해주시는 부분 반영해서 최종 질문드립니다
모든 링크 모두 편집 가능하도록 변경해서 올립니다!05.29에 올린 글이 가장 마지막까지 작업하던 코드라 어떤 식으로 수정하면 좋을지 말씀해주시면 많은 도움이 될 것 같아요!https://drive.google.com/file/d/1ZLSuM4WzJVs4Hec74h64ketY0KtzEEFu/view?usp=sharing ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ <기록> 24.05.29 00:50 작성[긴급-재업로드]수업질문 로그인 안 되는 문제수정한 링크(편집 가능)https://drive.google.com/file/d/1ZLSuM4WzJVs4Hec74h64ketY0KtzEEFu/view?usp=sharing 24.05.26 13:19 작성[긴급] 로그인해도 네비게이션 바가 안 바뀌고 있습니다!! 로그인이 안 됩니다 도와주세요[로그인 로그아웃] 강의까지 수강했는데 도저히 막막해서 고민하다가 답답한 마음에 올립니다.홈-가입-정보입력-로그인 눌러도 정보가 나타나지 않고 로그인/가입도 프로필/알림 이런 게 아예 안 뜹니다.그리고 로그인탭을 누르면 우리가 만든 로그인 폼이 아니라 시큐리티 로그인으로 이동하고, 시큐리티 로그인을 해도 시큐리티 로그인화면이 localhost:8080/login으로 나올 뿐입니다.로그인이 잘 돼서 로그인/가입이 프로필/알림 등으로 잘 보일 수 있도록 코드 어떻게 수정하면 좋을지 도와주세요. 가장 마지막까지 작성한 코드입니다. [로그인로그아웃 13:20]까지 수강했습니다. 수정한 링크(편집 가능)https://drive.google.com/file/d/1D3FexWWHLE0SZrdumtZVRmuqJFP5Atl6/view?usp=sharing
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
[긴급-재업로드]수업질문 로그인 안 되는 문제
https://drive.google.com/file/d/1ZLSuM4WzJVs4Hec74h64ketY0KtzEEFu/view?usp=sharing이 링크에 가면 pdf가 있는데, 여기에 제가 작성한 코드를 모두 작성했습니다.이 구글드라이브 링크에 가서 코드를 확인해보시고 답변에 참고가 되셨으면 좋겠습니다. 이 외에Tag.java, ConsoleMailSendeer.java, check-email.html, checked-email.html, profile.html, fragments.html는 pdf에 있습니다.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
[긴급] 로그인해도 네비게이션 바가 안 바뀌고 있습니다!! 로그인이 안 됩니다 도와주세요
[로그인 로그아웃] 강의까지 수강했는데 도저히 막막해서 고민하다가 답답한 마음에 올립니다.홈-가입-정보입력-로그인 눌러도 정보가 나타나지 않고 로그인/가입도 프로필/알림 이런 게 아예 안 뜹니다.그리고 로그인탭을 누르면 우리가 만든 로그인 폼이 아니라 시큐리티 로그인으로 이동하고, 시큐리티 로그인을 해도 시큐리티 로그인화면이 localhost:8080/login으로 나올 뿐입니다.로그인이 잘 돼서 로그인/가입이 프로필/알림 등으로 잘 보일 수 있도록 코드 어떻게 수정하면 좋을지 도와주세요. 가장 마지막까지 작성한 코드입니다. [로그인로그아웃 13:20]까지 수강했습니다. https://drive.google.com/file/d/1D3FexWWHLE0SZrdumtZVRmuqJFP5Atl6/view?usp=sharing
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
cropper 오류 문제로 질문드립니다..
좋은 강의 덕분에 공부를 열심히 잘 하고 있습니다 선생님 감사드립니다. 다름이아니라 이번 강의 중 cropper 사용에서 똑같이 설치 후이미지 파일을 불러오면 Uncaught TypeError: $newImage.cropper is not a function at reader.onload 지정된 함수가 아니라고 뜨는데 cropper가 안 먹혀서 그런 걸까요 ㅠㅠ..? 서치하고 코드를 계속 봐도 답이 나오지 않아 이렇게 질문 드립니다..
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
authentication관련 질문...
public void login(Account account) { System.out.println(account); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(account.getNickname(), account.getPassword(), Collections.singleton(new SimpleGrantedAuthority("ROLE_USER"))); SecurityContextHolder.getContext().setAuthentication(token); }우선 AccountService에 있는 login입니다.제가 테스트를 하던 도중 나머지는 다 되는데 authetication부분에서 문제가 있는것을 발견했습니다. 단위테스트로 하다보니 권한이 부여가 되지 않아서 회원가입을 해도 다시 원상태로 복구되더군요 springsecurity6로 바뀌면서 새로 바뀐부분이 있길래 구글링해서 바꿀만큼 바꿔보고 찾을만큼 찾아봤다 생각했는데도자꾸 권한부여 부분에서 문제가 생깁니다(위의 login함수)이럴경우 어떻게 바꾸어야 할까요...? 저 위에 SecurityContextHolder.getContext().setAuthentication(token); 라는 코드전에 토큰을 출력해 보니UsernamePasswordAuthenticationToken [Principal=jungsik, Credentials=[PROTECTED], Authenticated=true, Details=null, Granted Authorities=[ROLE_USER]]이렇듯 AUtheticated는 true로 반환되는데 redirect될때는 권한이 사라지는것 같습니다
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
모임참가 취소 할때 로직 질문
안녕하세요이부분에서 event.removeEnrollment(enrollment);이 메서드를 타고 들어가면이 메서드가 실행되는데 이때 106라인->enrollment.setEvent(null);이 코드는 꼭 필요 한건가요 ??첫번째 사진 보시면 어차피enrollmentRepository.delete(enrollment);이걸 실행 하는데 왜 있는건지 이해가 잘 안갑니다 ! =================두번째 질문===========이 부분에서 취소를 하면 대기하던사람이 자동 확정 하는 로직인데대기 하던 사람들 중 제일 먼저 신청을 해놓은 사람들을정렬해서 true 처리 해야하는데 이건 안되있는거 아닌가요 !!?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
HTML코드 및 강의 중간자료들
우선 강의중에 보여주셨던 HTML코드들에 대해서 행방을 알수가 없고 키를 강의마다 알려주신다는데 언제 알려주시는지 모르겠습니다.그래서 완성되어있던 파일에 있는 HTML파일들을 끌어다가 다시 완성시켰는데 코드자체에 CSS,Js가 적용되지 않고 에러가 뜨기도 합니다.Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "!hasNotification" (template: "fragments.html" - line 129, col 24) 혹시 최신화된 코드나 강의 진행도에 따른 코드 접근 방법이 있을까요...? 물론 제가 옛날 강의를 듣는것이다 보니 감수해야 하는 부분이겠지만 하나하나 알아가다보니 강의를 듣는 시간도 늘어지고 지치기 시작하는거 같습니다 시간이 지나면서 바뀌는 부분에 대해서 조금이라도 안내를 해주시거나, 주의할 부분이라던가 아니면 참고할만한 내용들을 추가해주시면 감사하겠습니다.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
부트스트랩, css
프로젝트를 받아서 실행시켜보니 이런 메시지가 뜨면서 css가 적용되지 않은것을 확인 했습니다. 해결해 보기 위해서 링크도 추가해보고 했지만 여전히 바뀌지가 않네요 이럴경우는 어떻게 해야할까요..?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
영속성 컨텍스트 질문
9:57 보시면51 라인 Account account = accountRepository.findByEmail(email); 이 순간 account 객체는 Persistent 상태이고,이 코드 이후로 account 이건 다시 detach 상태가 되는데63라인 accountService.completeSignUp(account);이 코드로 인하여 다시 Persistent 로 상태가 만들어진다고 생각하면 될까요 ?? (왜냐하면 accountService.completeSignUp(account);에는 트랜잭션어노테이션이붙어있어서)
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
다시 강의를 보니 드는생각..
이메일 인증요청시간을 1시간으로 잡으셨는데인증할때마다 마지막인증요청 시간을 업데이트 쳐줘야 하는거 아닌가요 ???(/resend-confirm-email) 이 메서드를 실행 정상 했을때 마다
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
session 객체를 thymeleaf 에서 어떻게 꺼낼 수 있죠?
@GetMapping("/basic-objects") public String basicObjects(HttpSession session) { ... }위 컨트롤러 작성하는 부분입니다.관련된 html 파일은 basic-objects 인데, ${#session} 으로 세션을 꺼내고 ${session} 으로도 세션을 꺼내네요.이게 가물가물한데 컨트롤러 메서드에서 파라미터로 호출하면 자동으로 모델에 넣어주기 때문에 thymeleaf 에서 ${session} 을 꺼낼 수 있는거죠?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타임리프 파서 주석 궁금증
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]보면 <!--/* ... /--> 이 있고, <!--/*--> ... <!--*/--> 이 있는데, 본문에서는 그냥 한줄표현, 여러줄 표현이라고 하셨는데, 제가 해보니까 그런 차이는 아닌것 같더라구요.<!--/* ... */--> : 아예 소스 상 주석처리 상태. 그래서 절대경로로 열어도 뷰에는 안나옴<!--/*--> ... <!--*/--> : 소스상으론 주석처리 안된상태. 그래서 절대경로로 열면 뷰에 보임이렇게 해석했는데 맞는 내용일까요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
강의 다 듣고 혼자 하는중인데 도저히 이해가 안가서 여쭤봅니다..
<tr th:each="festival : ${festivalList}"> <td><a th:href="@{/festival/one(param=${festival})}" th:text="${festival.name}"></a> </td> 뷰 단에서 fetivalList을 보여줍니다. 그리고 리스트에서 each문 돌면서 모두 잘보여줍니다. 그리고 festival을 다시 쓸일이 있어서 url에 담아서 컨트롤러로 넘어가면 못받습니다. for문 뿐 아니라 객체 하나만 있는 상황에서도 안넘어가요 @GetMapping("/festival/one/search") public String searchFestivalOne(@ModelAttribute("param") Festival festival, Model model) throws IOException { System.out.println(festival.getName()); String[][] searchList = festivalService.jsonToList(festival.getName()); model.addAttribute(searchList); model.addAttribute(festival.getName()); return "/festival/festival_search.html"; }festival모델에 생성자문제라 생각해서 어노테이션 각각적용해서 모든 케이스 다해봤는데도 안되네요.. 에러는 안뜨고 그냥 null값만 나옵니다.타임리프에서 festival.(변수) 는 모두 잘넘어가는데 festival 만넘기면 바인딩처리가 안됩니다.@Entity @Getter @Setter @NoArgsConstructor @AllArgsConstructor public class Festival { @Id private long id; private String name; //축제명 private String location; //개최장소 private String startDate ;//축제시작일자 private String endDate ; //축제종료일자 private String content ; //축제내용 private String org ; //주관기관 private String open_org; //주최기관 private String sponsor; //후원기관 private String phone_num; //전화번호 private String homepage; //홈페이지주소 private String etc; //관련정보 private String location1; //소재지도로명주소 private String location2; //소재지지번주소 }
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:field 정리
checkbox의 th:field에 관하여..개인적으로 설명이 부족하다고 느껴서 혼자 요것저것해보고 내린 결론입니다 검증 부탁드립니다~ 기본형태<input type="checkbox" th:field="${A}" th:value="${B}"> th:field가 기본형th:value적용 필수(없으면 에러)th:field의 값이 th:value와 일치하면 checkedth:field가 리스트형th:value적용 필수(없으면 에러)리스트에 th:value가 있으면 checked 예외)th:field가 boolean 타입th:value 생략 가능 th:field의 값이 true이면 checked특이사항 : th:value가 뭐든 무시하고 true로 강제로 씀 => 이렇게 하는 이유는 선택 안 하면 어차피 서버로 true값이 안 넘어오기 때문th:value가 생략 가능한 이유 : 위에 두 유형과 다르게 th:filed와 th:value를 비교하는 것이 아닌 th:filed의 true/false값 만을 보고 checked를 판별하기 때문임자세한 내용은 밑에https://www.inflearn.com/questions/255425/%ED%8E%98%EC%9D%B4%EC%A7%80-%EC%86%8C%EC%8A%A4%EB%B3%B4%EA%B8%B0%EC%97%90%EC%84%9C-true-%EA%B0%92-%EC%A7%88%EB%AC%B8)