개인적으로 문제가 해결된 방안을 공유하고자 하는 것이며

반드시 해결되지 않을 수 있음을 알려드립니다.
이 외 해결 방법 및 조언 환영합니다.

 

view에서 controller의 response를 받긴 함.

 

java.lang.StackOverflowError: null

 

하기 메세지 반복

at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2.11.4.jar:2.11.4]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755) ~[jackson-databind-2.11.4.jar:2.11.4]

 

view의 콘솔에서는 response 값을 찍는 중 특정 부분에서 출력이 끊기며 수백줄 반복 출력

 

- 원인 

우선 위의 '특정 부분에서 출력이 끊기며' 이 끊기는 부분이 A클래스 출력이 시작되는 부분이었다. "클래스명": 후 끊김.

Json 값에 dto가 들어있다. 그 dto가 A라는 클래스를 상속받았다.

dto안의 중첩클래스에서도 A라는 클래스를 멤버로 두기 때문에 해당 dto안에선 A라는 클래스가 중첩된다.

 

- 해결 

Json에 담지 않는 중첩클래스 선언부에 @JsonBackReference 어노테이션은 사용하여 직렬화를 수행하지 않도록 알려주었더니 해당 오류는 발생하지 않고 정상적으로 데이터를 받을 수 있었다.

 

* 직렬화란?

데이터를 연속적인 데이터로 변환하는 것을 말한다.

우리가 '데이터를 전송하기 위해 Json형태로 만드는 과정' 같은 것들을 예로 들 수 있다.

 개인적으로 문제가 해결된 방안을 공유하고자 하는 것이며

반드시 해결되지 않을 수 있음을 알려드립니다.
이 외 해결 방법 및 조언 환영합니다.

 

나의 경우 p태그 안에 th:text를 사용했는데 이 기능을 사용하면 바로 태그가 닫힌 것처럼 인식되는 듯하다.

 

<p th:text="${example}">
	<a href="#">test</a>
</p>

이런 식으로 작성했을 때 a태그 자체가 나오지 않는다. 다른 태그들로 바꿔도 동일하다.

페이지를 띄워 확인했을때 p태그 안에 a태그 자체가 없는 것으로 나왔다.

<p>에서 example의 값을 읽어들이고 텍스트로 표현하고 그 이후의 태그는 싸그리 무시하고 </p>로 건너뛰는 것처럼 작동한다.

 

정확한 원인은 모르겠으나 해결방안은 하나 찾았다.

<p>
	[[${example}]]
	<a href="#">test</a>
</p>

th:text와 동일한 기능으로 작동하는 것으로 이렇게 변경하니 a태그도 정상적으로 나타났다.

https://congsong.tistory.com/26?category=749196 

 

스프링 부트(Spring Boot) - 페이징(Paging) 처리하기 [개발을 시작해봐요!]

해당 포스팅에서 화면 처리는 JSP가 아닌 타임리프(Thymeleaf) 템플릿 엔진(이하 타임리프)을 사용합니다. 이전 글에서는 프로젝트에 AOP와 트랜잭션을 적용해 보았습니다. 이번 글에서는 게시판에

congsong.tistory.com

상기 블로그를 참고하여 페이징 처리 시도 중 클래스 확인이 불가한 오류가 계속됨.

 

factoryBean.setTypeAliasesPackage("~~.dto"); 를 ~~.*로 수정하면 되는듯 하나 본인은 오류가 계속됨.

 

정상 설정 변경이 되지 않는 듯하여 DTO 클래스와 같은 패키지에 Criteria를 넣고 진행하니 오류 발생하지 않음.

+ Recent posts