inflearn logo
강의

Khóa học

Chia sẻ kiến thức

MVC mùa xuân

기선님 엑셀 다운로드 기능을 만들고 있는데 해결하기 어려운 에러가 생겨서 질문 드립니다.

379

woody

7 câu hỏi đã được viết

1

안녕하세요 기선님

제가 현재 엑셀 다운로드 기능을 구현하고 있습니다.

컨트롤러 코드는 이렇게 되어 있습니다.

initExcelData() 함수는 테스트용 데이터를 만드는 함수입니다.

그리고 아래는 AbstractXlsxView를 상속받아서 만든 ExcelXlsxView 객체입니다.

제 생각에는 이 객체가 View 인터페이스를 구현한 객체이기 때문에

이 객체를 빈으로 등록하면

BeanNameViewResolver로 뷰를 받을 수 있다고 생각했습니다.

그런데 아래와 같이 에러가 생겼고

갑자기 타임리프 뷰리졸버에서 에러가 생긴것 같아서

스프링 애플리케이션을 실행시키면서 뷰 리졸버 순서도 확인해보았는데

BeanNameViewResolver 가 ThymeleafViewResolver보다 앞이여서

이제 어떻게 이 문제를 해결해야 될지 막막합니다.

정답이 아니더라도 앞으로 어떻게 이 문제를 해결해 나가면 좋을 것 같은지 조언해주시면 감사하겠습니다.

java spring MVC

Câu trả lời 2

1

whiteship

일단 이유는 0순위에 있는 ContentNegotiatingViewResolver 때문입니다. 그 뷰에 대해서는 나중에 좀 더 공부해 보시길 바랍니다.

문제를 해결하는 방법은 여러가지가 있는데 해당 요청 핸들러에서 문자열을 리턴하는게 아니라 해당 뷰 객체를 리턴하는 방법이 있습니다. 그러면 굳이 문자열로 해당 뷰 객체를 찾는 ViewResolver를 거치지 않아도 되며 개발자가 보기에도 직관적인 코드가 되기 때문에 저는 개인적으로 이 방법을 더 선호합니다만.. 

지금처럼 문자열을 리턴하고, ViewResolver를 사용해서 찾게 하고 싶다면 @GetMapping에 produces를 추가해서 CNVR이 이 요청에 대한 응답을 보여줄 뷰로 엑셀 뷰를 찾도록 알려줘야 합니다. 지금은 아무런 정보가 없어서 기본 뷰인 타임리프 뷰 리졸버를 사용한것으로 보이네요. 

@GetMapping(value = "/excel", produces = "application/vnd.ms-excel")

이런식으로 엑셀 뷰 헤더 정보를 추가해주면 찾아줄겁니다.

0

woody

감사합니다. ㅜ ㅜ 뷰리졸버에 대해서 좀 더 공부를 해봐야겠네요 

7:58 예제 코드 찾는 법

0

256

2

PATCH의 Idempotent에 대한 질문

0

257

1

2:51초 질문입니다.

0

324

1

만약 어플리케이션컨텍스트에 필터를 설정하지 않으면 어떻게되나요?

0

361

0

web.xml에 위치한 애플리케이션 web.xml 내에서 파싱 오류 발생

0

515

0

Spring Boot 2.6 이상 버전에서의 DispatcherServlet

0

366

1

Event`Xxx`Controller 분리할때의 기준에 관한 질문입니다.

0

634

1

11분 57초 쯤, `returnValueHandlers` 들의 네이밍컨벤션 관련 질문입니다.

0

379

1

@EnableWebmvc 설정을 하면

0

415

1

springframework와의 차이점

0

283

1

@RequestBody의 바인딩에러를 잡는 방법

1

1655

2

안녕하세요 기선님 강의를 보다 서블릿에 궁금증이 생겨 질문 드립니다

1

237

1

HelloService의 값을 전달을 못 받습니다.

0

296

1

ServletContext와 WebApplicationContext의 관계 질문

1

740

1

하나의 서비스에, 두개의 리포지토리도 연결이 되나요?

0

364

1

view name 리턴에 대해

0

290

2

Formatter print 질문 드립니다.

0

232

1

에리 메시지가 한글입니다.

0

294

1

java 클래스파일로 설정되어 있던 것을 web.xml로 바꾸는 경우

0

338

1

@RequestParam

0

255

1

@Retention 질문

0

229

1

Event.builder() 관련 mac에서 lombok 문제 있으신 분들

0

198

1

스프링 부트 사용시 WebMvcConfigurerSupport 클래스

0

253

1

http://localhost:8080/hello 입력시 오류

0

492

4