포트폴리오/SPRINGBOOT 옛날

2-13 : BootStrap

서버관리자 페페 2022. 10. 2. 11:27

단 하나의 맥락

: FE 부분을 P/I로 쉽게 처리

 


Semiflow Bundle

- bootStrap 설치

- 필요 P/I 파일 static 폴더에 담기

- question_list.html 적용

- question_detail.html에 적용


자각

 

-

 

 

플러그인 설치를 위해

- 홈페이지에서 파일 형식의 P/I 번들인 폴더를 다운받음

- bootstrap-5.1.3-dist.zip/bootstrap-5.1.3-dist/css/bootstrap.min.css 를 카피해 static 폴더에 넣는다

 

 

-

 

 

question_list.html에 적용하기 위해

- 최상단에 

- <link rel="stylesheet"  type="text/css"  th:href="@{/bootstrap.min.css}">를 넣어 P/I를 인식할 수 있도록 한다

 

- <table></table> 바깥을 <div class="container my-3"></div> 로 감싼다 

- <table></table> 을 <table class="table"></table> 로 변경하여 CSS 처리

 

- <thead></thead>를 <thead class="table-dark"></thead> 로 변경하여 CSS 처리

- 헤드단의 table row는 그대로 들어가고 <th>번호</th> 엘리먼트만 추가

- 바디단의 table row는 순번 표시를 위해 <tr th:each="question, loop : ${questionList}"></tr> 로 변경처리

 

- 3개의 <td></td> 항목이 나오는데

- <td th:text="${loop.count}"></td>

- <td></td> 사이 <a th:href="@{|/question/detail/${question.id}|}"  th:text="${question.subject}"></a> 제목 링크처리

- <td th:text="${#temporals.format(question.createDate, 'yyyy-MM-dd HH:mm')}"></td> 처리

 

-

 

(question_detail.html)

- 최상단 P/I 인식 처리

- 주제와 내용, 기 답변 리스트, 답변 등록 폼 전체를 <div class="container my-3></div>로 감싼다

 

 

 

- (1/3) Question 표시 :

제목 : <h2 class="border-bottom py-2" th:text="${question.subject}"></h2>

내용 틀 : <div class="card my-3"></div> 로 카드 테두리로 감싼 내부에 <div class="card-body"></div> 카드바디 구현

내용 구현 :

<div class="card-text"  style="white-space: pre-line" th:text="${question.content}"></div>

<div class="d-flex justify-content-end"></div> 내부에 <div class="badge bg-light text-dark p-2 text-start"><div>로 CSS를 만들고

<div th:text="${#temporals.format(question.createDate, 'yyyy-MM-dd HH:mm')}"></div> 시간 표시를 집어넣는다

 

- (2/3) 기 답변 표시

<h5 class="border-bottom my-3 py-2"  th:text="|${#lists.size(question.answerList)}개의 답변이 있습니다.|"></h5> 로 갯수 표시

<div class="card my-3"  th:each="answer : ${question.answerList}"></div> 로 row를 반복한 후

<div class="card-body"></div> 로 카드 바디 구현

 

<div class="card-text"  style="white-space: pre-line" th:text="${answer.content}"></div> // 내용

<div class="d-flex justify-content-end"></div> 로 CSS를 만든 뒤

<div th:text="${#temporals.format(answer.createDate, 'yyyy-MM-dd HH:mm')}"></div>로 날짜 표시

 

- (3/3) 폼의 각 기능 CSS 코드 마지막에

(form)class="my-3" / (textarea)class="form-control" / (input type)class="btn btn-primary my-2" 추가한다

 

l="stylesheet" type="text/css" th:href="@{/bootstrap.min.css}">
<div class="container my-3">
    <table class="table">
        <thead class="table-dark">
            <tr>
                <th>번호</th>
                <th>제목</th>
                <th>작성일시</th>
            </tr>
        </thead>
        <tbody>
            <tr th:each="question, loop : ${questionList}">
                <td th:text="${loop.count}"></td>
                <td>
                    <a th:href="@{|/question/detail/${question.id}|}" th:text="${question.subject}"></a>
                </td>
                <td th:text="${#temporals.format(question.createDate, 'yyyy-MM-dd HH:mm')}"></td>
            </tr>
        </tbody>
    </table>
</div>

 

 

 

<link rel="stylesheet" type="text/css" th:href="@{/bootstrap.min.css}">
<div class="container my-3">
    <!-- 질문 -->
    <h2 class="border-bottom py-2" th:text="${question.subject}"></h2>
    <div class="card my-3">
        <div class="card-body">
            <div class="card-text" style="white-space: pre-line;" th:text="${question.content}"></div>
            <div class="d-flex justify-content-end">
                <div class="badge bg-light text-dark p-2 text-start">
                    <div th:text="${#temporals.format(question.createDate, 'yyyy-MM-dd HH:mm')}"></div>
                </div>
            </div>
        </div>
    </div>
    <!-- 답변의 갯수 표시 -->
    <h5 class="border-bottom my-3 py-2" 
        th:text="|${#lists.size(question.answerList)}개의 답변이 있습니다.|"></h5>
    <!-- 답변 반복 시작 -->
    <div class="card my-3" th:each="answer : ${question.answerList}">
        <div class="card-body">
            <div class="card-text" style="white-space: pre-line;" th:text="${answer.content}"></div>
            <div class="d-flex justify-content-end">
                <div class="badge bg-light text-dark p-2 text-start">
                    <div th:text="${#temporals.format(answer.createDate, 'yyyy-MM-dd HH:mm')}"></div>
                </div>
            </div>
        </div>
    </div>
    <!-- 답변 반복 끝  -->
    <!-- 답변 작성 -->
    <form th:action="@{|/answer/create/${question.id}|}" method="post" class="my-3">
        <textarea name="content" id="content" rows="10" class="form-control"></textarea>
        <input type="submit" value="답변등록" class="btn btn-primary my-2">
    </form>
</div>

 

'포트폴리오 > SPRINGBOOT 옛날' 카테고리의 다른 글

2-15 : Create와 Form  (5) 2022.10.02
2-14 : 표준 형식과 템플릿 상속  (0) 2022.10.02
2-12 : Static Directory and CSS  (1) 2022.10.02
2-11 : Answer Create  (3) 2022.10.01
2-10 : 질문 리스트 > 질문 상세  (1) 2022.10.01