TIL

85일차(Thymeleaf, 다중 조건)

haedal-uni 2021. 12. 7. 00:27
728x90

Thymeleaf

spring 실행할 때 서버에서 에레 메세지를 띄울 때 자주 보이는게 Thymeleaf 어쩌구이다.

그래서 도대체 Thymeleaf가 뭐길래 얘가 자꾸 뜨는걸까 하고 검색해봤다.

 

타임리프는 흔히 View Template(뷰 템플릿)이라고 부른다.

뷰 템플릿은 컨트롤러가 전달하는 데이터를 이용하여 동적으로 화면을 구성할 수 있게 해준다.

 

타임리프thymeleaf 는 자바 라이브러리이며,

웹과 웹이 아닌 환경 양쪽에서 텍스트, HTML, XML, Javascript, CSS

그리고 텍스트를 생성할 수 있는 템플릿 엔진이다.

 

웹 애플리케이션에서 뷰View 계층 에 보다 적합하지만, 오프라인 환경에서 많은 형태로 처리가 가능하다.

스프링 MVC와의 통합 모듈을 제공하며, 애플리케이션에서 JSP로 만든 기능들을 완전히 대체할 수 있다.

 

 

* JSP : HTML코드에 Java 코드를 넣어 동적인 웹 페이지를 생성하는 웹 어플리케이션 도구

 

 

[Spring Boot] 타임리프(Thymeleaf)란?

THYMELEAF_TEMPLATE_ENGINE.md

JSP란?

 


협업

나는 issue에 기능 추가할 때나 오류로 인해 문제가 생겨 내가 해결하지 못할 때,

기능을 다른것으로 제안할 때 등등 issue를 많이 활용하는데

 

오늘 느낀 것이 내가 오류를 발견해서 올리면 내가 해결하고 끝나고

내가 기능 제안이나 팀 활동 하는 것에 대해서 Github에 올리면 시간이 꽤 지난 후에 보시는 것 같다.

슬랙에 질문을 드리면 답이 느리거나 답을 안하고 넘어가는 경우가 있어서 어떻게 해야할지 모르겠다.

 

오늘도 issue로 내가 해야하는 기능에 대해 어떤 방법으로 할지 issue에 올렸는데 빨리 진행하려면 

바로 물어보는게 나을 것 같아서 게더에서 말을 하려고 했는데 다들 안계셨다.

이 문제에 대해서 얘기를 드렸더니 슬랙을 자주 확인한다고 하셨다. 

 

 


조건문

주소 입력 안했을 때 default 값으로 무언가를 입력해놓을지

아니면 그냥 내버려둘까에 대해 고민하다가 조건문을 만들게 되었다.

 

사진을 등록 안하거나 글을 작성하지 않았을 때

alert창을 띄우고 빈 값이 아닐 경우 등록하기로 넘어가게 코드로 작성했다.

 

주소를 입력하지 않았을 때는 처음에만 alert창을 띄우고

두번째 등록하기 버튼을 클릭했을 경우엔 그냥 넘어가게 했다.

 

여기서 문제가 난게 주소를 입력하지 않았을 때 alert 창을 띄우고

count 변수에 1을 추가한 후 count가 1이 되면 자동으로 등록이 되도록 했는데 

사진을 등록안하거나 글을 작성하지 않았을 때 alert창을 띄워야 하는데 그냥 등록하는 걸로 되었다.

 

그래서 나는 다중 조건을 작성하게 되었다.

or은 || 로 작성하고 and는 &&로 작성하는 것을 알게 되어서

주소 입력을 안하면 alert창을 띄우는 것이 아니라

 

if 사진 등록을 하지 않거나 || 게시글을 작성하지 않았을 시 → alert 창 

else {

사진 등록을 하고 && 게시글을 작성하고 && 주소 입력을 안했을 시 → alert 창 , count +=1

사진 등록을 하고 && 게시글을 작성하고 && 주소 입력을 안함 && count == 2 → saveUpload()

게시글 작성을 하고 && 주소 입력하고 && 사진 업로드 안했을 시 → alert 창

주소 입력을 하고 && 사진 등록을 하고 && 게시글 작성을 안했을 시  → alert 창

}

이런식으로 작성했다.

 

 

그런데 주소 미 입력 시 주소 alert 창이 뜨고 저장이 되는 현상이 발생했다.

 

 

 

 

이유를 몰라서 고민하다가 주소는 미 입력해도 저장을 할 수 있기 때문에

alert 창 대신에 confirm을 이용하기로 했다.

 

 

confirm을 이용해서 주소 입력을 원할 경우 취소버튼을 누르면 그 화면으로 유지되어야 하는데

자꾸 업로드가 되어서 아래 else 문이 문제일 것 같아 수정했다.

            if ( ($("#writerArticle").val().length != 0) && ($("#addressSearch").val().length !=0) && ($("#product_image")[0].files[0] == undefined) ) {
                alert("사진 업로드가 필요해요! 😆")
            } else { saveArticle() }

            if ( ($("#addressSearch").val().length !=0) && ($("#product_image")[0].files[0] != undefined) && $("#writerArticle").val().length == 0) {
                alert("글 작성이 필요해요! 🐕")
            } else { saveArticle() }

 

else문을 없애고 if문으로 완벽하게 작성할 경우에만 업로드 되는 함수를 실행하게 했다.

 

if ( ($("#writerArticle").val().length != 0) && ($("#addressSearch").val().length !=0) && ($("#product_image")[0].files[0] == undefined) ) {
    alert("사진 업로드가 필요해요! 😆")
}
if ( ($("#addressSearch").val().length !=0) && ($("#product_image")[0].files[0] != undefined) && $("#writerArticle").val().length == 0) {
    alert("글 작성이 필요해요! 🐕")
}
if (($("#writerArticle").val().length != 0) && ($("#addressSearch").val().length !=0) && ($("#product_image")[0].files[0] != undefined)) { saveArticle() }

 

 

그랬더니 내가 의도한 대로 실행이 되었다.

 

 

 

 

전체 코드

더보기

 

function checkUpload() {
        if ( ($("#product_image")[0].files[0] == undefined) || ($("#writerArticle").val().length == 0) ) {
            alert("사진 혹은 글 작성은 필수입니다 😭")
        } else {
            // 주소 입력 확인
            if ( ($("#product_image")[0].files[0] != undefined) && ($("#writerArticle").val().length != 0) && ($("#addressSearch").val().length ==0) ) {
                let addressConfirm = confirm("주소 입력 정말 안하실 건가요??🥺");
                if (addressConfirm) {
                    saveArticle()
                }
                else {
                    alert('주소 입력을 위해 업로드 작성 화면으로 돌아갑니다.');
                }
            }

            if ( ($("#writerArticle").val().length != 0) && ($("#addressSearch").val().length !=0) && ($("#product_image")[0].files[0] == undefined) ) {
                alert("사진 업로드가 필요해요! 😆")
            }
            if ( ($("#addressSearch").val().length !=0) && ($("#product_image")[0].files[0] != undefined) && $("#writerArticle").val().length == 0) {
                alert("글 작성이 필요해요! 🐕")
            }
            if (($("#writerArticle").val().length != 0) && ($("#addressSearch").val().length !=0) && ($("#product_image")[0].files[0] != undefined)) { saveArticle() }
        }
    }

 

 

 

728x90

'TIL' 카테고리의 다른 글

87일차(Pull request)  (0) 2021.12.09
86일차  (0) 2021.12.07
82일차  (0) 2021.12.03
81일차(전 날 오류 해결하기 & 모의면접 후기)  (1) 2021.12.02
80일차  (0) 2021.12.01