404 ⇒ 브라우저가 요청한 페이지를 찾을 수 없다.
500 ⇒ Controller 의 함수는 호출되었지만 , 결과값을 리턴해야 하는 함수에서 아무런 값도 리턴하지 않음.
미션 :
타임리프, layout-dialect 라이브러리 추가
질문목록 페이지(question_list.html 구현), ‘표’로 구현하기(제목과 작성일시만 나오게끔.)
컨트롤러를 통해 질문목록 데이터 전달.
html
table>(thead>tr>th*2)+(tbody>tr>td*2)
구현내용
- InitService -> InitDb 에서 초기 데이터 생성.
- question_list.html 표 구현, 모델에서 받은 데이터로 화면 출력.
타임리프를 사용하려면, 다음과 같이 라이브러리를 추가해야 합니다.(타임리프, layout-dialect)
dependencies {
**implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'**
**implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'**
}
BaseEntity 의 @Getter, @Setter 를 통해 생성된 메서드들과 모든 필드들을 ‘상속’받기 때문에 사용할 수 있는 것이다.
참고로, 생성일은 setter 로 세팅할 수 있지만, 그렇게 하지 않는다.
@EntityListeners(AuditingEntityListener.class)
public class BaseEntity {
...
}
@SpringBootApplication
@EnableJpaAuditing
public class SbbApplication {
...
}
자주 사용하는 유형은 크게 3가지가 있다.
```java
th:if = "${question != null}"
```
```java
th:each = "question, loop : ${questions}"
```
- loop 를 통해 다음과 같은 속성들을 사용할 수 있다.
- loop.index - 반복 순서, 0부터 1씩 증가
- loop.count - 반복 순서, 1부터 1씩 증가
- loop.size - 반복 객체의 요소 갯수 (예: questionList의 요소 갯수)
- loop.first - 루프의 첫번째 순서인 경우 true
- loop.last - 루프의 마지막 순서인 경우 true
- loop.odd - 루프의 홀수번째 순서인 경우 true
- loop.even - 루프의 짝수번째 순서인 경우 true
- loop.current - 현재 대입된 객체 (예: 위의 경우 question과 동일)
```java
th:text = "${question.subject}"
```
```java
<td>[[${question.subject}]]</td>
```
- 다음과 같이 th:text 를 쓰지 않고 대괄호를 이용해서 출력할 수도 있다.
spring.jpa.hibernate.ddl-auto=update
update 가 안되는 오류
spring.jpa.hibernate.hbm2ddl.auto=update
이렇게 바꿔주니 해결… 스프링 부트 버전으로 인한 오류인 것 같다.