학원 수업 47일차 221027
- 9-11
프로젝트명 : /springWeb05-design
(FaqDTO.java)(/springWeb05-design/src/main/java/com/green/nowon/domain/dto/faq/FaqDTO.java)
빌더패턴 특징?
https://mangkyu.tistory.com/163
클래스 내부에 이너클래스를 만들어줌
(/springWeb05-design/src/main/java/com/green/nowon/controller/CustomerController.java)
따라치기는 하는데 이게 지금 뭐하는 건지 왜 하는건지 이해가 안됨
(/springWeb05-design/src/test/java/com/green/nowon/SpringWeb05DesignApplicationTests.java)
JUnit Test?
@Test
void faq더미테스트() {
log.debug(" >>> faqMapper : "+faqMapper);
log.info(" >>> faqMapper : "+faqMapper);
log.error(" >>> faqMapper : "+faqMapper);
}
디버그가 안뜰때 설정
(/springWeb05-design/src/main/resources/application.yml)
logging:
level:
com:
green:
nowon: debug
(/springWeb05-design/src/test/java/com/green/nowon/SpringWeb05DesignApplicationTests.java)
//java @since 1.8
IntStream.rangeClosed(1, 10000).forEach(i->{
FaqDTO dto=FaqDTO.builder() //빌더클래스 생성
.division("use").question("질문-쇼핑몰이용-"+i).answer("답변-쇼핑몰이용"+i)
.build(); //FaqDTO객체생성
faqMapper.save(dto);
});
- 11-12
고객센터페이지 디자인 다시하는 중
CSS filter Property
https://www.w3schools.com/CSSref/css3_pr_filter.php
이미지 태그에서 적용 가능
- 12-1
(/springWeb05-design/src/main/java/com/green/nowon/domain/mapper/FaqMapper.java)
- 2-3
- thymeleaf 플러그인 설치
Help > Elipse Marketplace
이클립스(마켓플레이스 맨 왼쪽)에서 thymeleaf 검색하여 설치
충돌하여 설치가 안된다면
https://www.thymeleaf.org/ecosystem.html
플러그인 설치방법 있음
https://github.com/thymeleaf/thymeleaf-extras-eclipse-plugin
https://www.thymeleaf.org/eclipse-plugin-update-site/
In Eclipse, go to Help >> Install New Software... then enter this update site URL (should be http://www.thymeleaf.org/eclipse-plugin-update-site/).
Eclipse should then pick up the plugin to install.
설치완료되면 프로젝트 우클릭 > Configure > Add Thymeleaf Nature 눌러주면 됨
컨트롤+스페이스바 누르면 제안기능 사용가능
충돌 이슈 있음 무조건 되는거 아님 ㅠ
자바 11버전에서 안된대(컴파일버전이 17이어서 안됨)
--해결책? eclipse폴더의 eclipse.ini파일 편집! 맨 아래에 아래 줄 넣어줘
--add-opens=java.base/java.lang=ALL-UNNAMED
[Solution] -> --add-opens=java.base/java.lang=ALL-UNNAMED in eclipse.ini
참고 https://github.com/thymeleaf/thymeleaf-extras-eclipse-plugin/issues/110
Eclipse Thymeleaf plugin throws exception when using Ctrl+Space #110
홈>고객센터페이지에 오면 등록된 문의글을 보여줄거야!
1번부터 10번까지를 한번에! 기능 구현
- 3-4
고객센터 faq 리스트 페이지별로 볼 수 있게 만드는 중(한 페이지에 글 10개씩 length=10)
Numbers
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#numbers
${#numbers.sequence(from,to)}
- 4-5
(/springWeb05-design/src/main/java/com/green/nowon/service/impl/CustomerServiceProcess.java)
@Override
public void faqAll(Model model, int page) {
//if (page=1) {int from=1, int to=10};
//if (page=2) {int from=11, int to=20};
int length = 10; //페이지당 보여줄 개수
int to = page*length;
int from = to-length+1;
//페이지계산
//총 게시글 수
int tot = mapper.countAll();
System.out.println("faq의 총 개수 : "+tot);
int pageTotal = tot/length;
// if(나머지가 있으면) { pageTotal++; }
if(!(pageTotal==0)) { //if(pageTotal!=0)
pageTotal++;
}
//page=1, pGroup=1, pFrom=1, pTo=5
//page=2, pGroup=1, pFrom=1, pTo=5
//page=3, pGroup=1, pFrom=1, pTo=5
//page=4, pGroup=1, pFrom=1, pTo=5
//page=5, pGroup=1, pFrom=1, pTo=5
//page=6, pGroup=2, pFrom=6, pTo=10
//page=7, pGroup=2, pFrom=6, pTo=10 ...
int pLength = 5; //페이지 그룹에 들어가는 글의 개수
int pGroup = page/pLength;
if(page%pLength != 0) pGroup++; // % 나머지계산
//page start~end -> pGroup=1
//page 1~5 -> pGroup=1
//page 6~10 -> pGroup=2
//page 11~15 -> pGroup=3
int end = pGroup*pLength;
int start = end-pLength+1;
System.out.println("총페이지수 : "+pageTotal);
model.addAttribute("list", mapper.faqAll(from, to));
model.addAttribute("pageTot",pageTotal);
model.addAttribute("pageStart", start);
model.addAttribute("pageEnd", end);
}
Prev Sign, Next Sign 만들기
(/springWeb05-design/src/main/resources/templates/customer/front.html)
- 5-6
4.10 Comparators and Equality
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#comparators-and-equality
A simpler alternative may be using textual aliases that exist for some of these operators: gt (>), lt (<), ge (>=), le (<=), not (!). Also eq (==), neq/ne (!=).
페이지 시작과 끝에서 <, > 표시 없애기
<div class="paging">
<ol class="flex center">
<!-- Prev Sign -->
<li th:if="${pageStart ne 1}"> <!-- ne(!=) -->
<a th:href="|/customers/home?page=${pageStart-1}|"><</a>
</li>
<!-- pageStart ~ pageEnd 반복 -->
<li th:each="pageNo:${#numbers.sequence(pageStart,pageEnd)}">
<a th:href="|/customers/home?page=${pageNo}|">[[${pageNo}]]</a>
</li>
<!-- Next Sign -->
<li th:if="${pageEnd < pageTot}">
<a th:href="|/customers/home?page=${pageEnd+1}|">></a>
</li>
</ol>
<div>
첫페이지로<<, 마지막페이지로>> 표시 만들기
<!-- 첫 페이지로 -->
<li>
<a href="/customers/home?page=1"><<</a>
</li>
<!-- 마지막 페이지로 -->
<li>
<a th:href="|/customers/home?page=${pageTot}|">>></a>
</li>
(/springWeb05-design/src/main/java/com/green/nowon/utils/PageDTO.java)
리스트 페이지 구현에 필요한 계산식들 여기에 모아두자