분류 전체보기 85

템플릿 레이아웃[2]

앞서 언급한 개념을 레이아웃 H1 레이아웃 컨텐츠 레이아웃 푸터 /resources/templates/template/layoutExtend/layoutExtendMain.html 메인 페이지 컨텐츠 메인 페이지 포함 내용 결과 레이아웃 H1 메인 페이지 컨텐츠 메인 페이지 포함 내용 레이아웃 푸터 layoutExtendMain에는 파라미터를 section으로 넘겼는데 layoutFile에서는 파라미터를 content로 받아서 사용 layoutFile.html 을 보면 기본 레이아웃을 가지고 있는데, 에 th:fragment 속성이 정의되어 있다. 이 레이아웃 파일을 기본으로 하고 여기에 필요한 내용을 전달해서 부분부분 변경하는 것으로 이해하면 된다. layoutExtendMain.html 는 현재 페이..

Java/Thymeleaf 2021.12.10

템플릿 레이아웃[1]

이전에는 일부 코드 조각을 가져와서 사용했다면 이번에는 더 확장해서 코드 조각을 레이아웃에 넘겨서 사용하는 방법 예를 들어 /resources/templates/template/layout/layoutMain.html 메인 컨텐츠 결과 메인 컨텐츠 common_header(~{::title},~{::link}) 이 부분이 핵심이다. ::title 은 현재 페이지의 title 태그들을 전달한다. -> layoutMain.html 의 title 태그들 ::link 는 현재 페이지의 link 태그들을 전달한다. -> layoutMain.html 의 link 태그들 결과 - 메인 타이틀이 전달한 부분으로 교체 - 공통 부분은 그대로 유지되고, 추가 부분에 전달한 들이 포함된 것을 확인 레이아웃 개념을 두고, 그..

Java/Thymeleaf 2021.12.10

템플릿 조각[0]

상단 영역이나 하단 영역, 좌측 카테고리 등등 여러 페이지에서 함께 사용하는 공통 영역을 관리 용이하게 처리 지원 package hello.thymeleaf.basic; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/template") public class TemplateController { @GetMapping("/fragment") public String template() { retu..

Java/Thymeleaf 2021.12.10

자바스크립트 인라인

자바스크립트에서 타임리프를 편리하게 사용할 수 있는 자바스크립트 인라인 기능을 제공 결과 //-----------------------자바스크립트 인라인 사용 전----------------------- //-----------------------자바스크립트 인라인 사용 후----------------------- 자바스크립트 인라인을 사용하지 않았을 경우의 문제점 1) 텍스트 렌더링 - var username = [[${user.username}]]; - 인라인 사용 전 -> var username= userA; - 인라인 사용 후 -> var username= "userA"; [인라인 사용 전] 타임리프 입장에서는 정확하게 렌더링 한 것이지만 아마 개발자가 기대한 것은 다음과 같은 "userA"라는..

Java/Thymeleaf 2021.12.10

블록

은 HTML 태그가 아닌 타임리프의 유일한 자체 태그 보통 Thymeleaf는 속성으로 동작을 하지 태그로 동작하지 않는다. @GetMapping("/block") public String block(Model model) { addUsers(model); return "basic/block"; } 사용자 이름1 사용자 나이1 요약 사용자 이름1 userA 사용자 나이1 10 요약 userA / 10 사용자 이름1 userB 사용자 나이1 20 요약 userB / 20 사용자 이름1 userC 사용자 나이1 30 요약 userC / 30 HTML 태그안에 속성으로 기능을 정의해서 사용하는데, 위 예처럼 이렇게 사용하기 애매한 경우에 사용하면 된다. 은 렌더링시 제거됨. 두개의 div를 같이 돌리고 싶을경..

Java/Thymeleaf 2021.12.10

[ERROR] Mybatis 새로운 mapper 패키지 생성 했을 경우

데이터처리 에러 Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for Home.selectAllUserList 원인 1) mapper id가 다를경우 - mapper id값과 DAO에 적어놓은 id값이 다른 경우 2) Parameter와 bean의 필드명이 틀린 경우 3) mapper파일에 정의된 네임스페이스(namespace)와 DAO에서 호출하는 네임스페이스(namespace)가 다를 경우 4) MyBatis config파일에 mapper가 정의가 되어 있지 않거나 Spelling이 틀린 경우 5) mapper에 정의된 namespace 명칭이 같은 Application 내에 중..

Java/Egov 2021.12.07

Egov 패키지 추가 시 처리 사항

EgovFramework Version : 3.10 JDK Version : 1.8 [ test 패키지를 생성했을 경우 ] - context-common.xml 추가 - base-package=""egovframework, test" - egov-com-servlet.xml 추가 - base-package=""egovframework, test" - context-aspect.xml [ egovframework 안에 koreanLang 패키지 생성했을 경우 ] 추가 - or execution(* egovframework.koreanLang..impl.*Impl.*(..)) " or를 사용하여 추가해주면 설정이 끝나고 필요한 파일들을 추가해서 작업을 진행

Java/Egov 2021.12.07

[ERROR] MySQLSyntaxErrorException: Table doesn't exist ..

에러 상황 Ubuntu 20.04 테스트 서버에 mariaDB 스키마 추가 후 계정 생성 및 권한 설정 후 소스코드를 실행시에 해당 에러 발생 [ Intellij 콘솔 ] Table 'test.COMTNEMPLYRINFO' doesn't exist 해당 데이타베이스에 [테이블]이름을 가진 테이블이 존재하지 않을때 발생 다른 서버에서 dump를 떠와서 테스트 서버로 restore 했기 때문에 테이블은 존재하지만 에러가 발생했다는 것을 인지 해결 Mysql 기본 설정으로 테이블의 대소문자 구분을 설정 되어있음. show variables like 'lower_case_table_names'; Ununtu Mysql 설정 : /etc/mysql/mariadb.conf.d/50-server.cnf vim /et..

Database 2021.12.07

주석

@GetMapping("/comments") public String comments(Model model) { model.addAttribute("data", "Spring!"); return "basic/comments"; } 예시 html data 1. 표준 HTML 주석 2. 타임리프 파서 주석 html data 3. 타임리프 프로토타입 주석 결과 예시 Spring! 1. 표준 HTML 주석 2. 타임리프 파서 주석 3. 타임리프 프로토타입 주석 Spring! 1. 표준 HTML 주석 자바스크립트의 표준 HTML 주석은 타임리프가 렌더링 하지 않고, 그대로 남겨둔다. 2. 타임리프 파서 주석 타임리프 파서 주석은 타임리프의 진짜 주석이다. 렌더링에서 주석 부분을 제거한다. 3. 타임리프 프로토타입..

Java/Thymeleaf 2021.12.03

조건부 평가

조건부 평가 타임리프의 조건식 if , unless ( if 의 반대) @GetMapping("/condition") public String condition(Model model) { addUsers(model); return "basic/condition"; } if, unless count username age 1 username 0 switch count username age 1 username 10살 20살 기타 if, unless count username age 1 userA 10 미성년자 미성년자 2 userB 20 3 userC 30 switch count username age 1 userA 10살 2 userB 20살 3 userC 기타 if, unless 타임리프는 해당 조건이..

Java/Thymeleaf 2021.12.03