2016-09-30 4 views
0

지금은 404/500 모두에서 json 오류 메시지가 표시됩니다.스프링 부트의 모든 오류에 대한 리디렉션을 설정/설정하는 방법은 무엇입니까?

어떻게하면 모든 404/500에서 특정 오류 페이지로 리디렉션되도록 구성 할 수 있습니까? ...

@Bean 
public EmbeddedServletContainerCustomizer containerCustomizer() { 
    return container -> { 
     container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error/errorpage")); 
     container.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/error/errorpage")); 
    }; 
} 

하지만 지금은 그냥 빈 페이지로 리디렉션

솔루션 :

나는 내 초기화 클래스에 다음과 같은 추가 한? 기본적으로 오류 컨트롤러를 구현하고 모두 오류 페이지로 리디렉션하도록합니다. 내 오류 페이지는 WEB-INF/페이지 바로 아래에있는 jsp입니다. 이게 맞습니까?

@RestController 
@RequestMapping("/errorpage") 
public class SimpleErrorController implements ErrorController { 

@Autowired 
public SimpleErrorController(ErrorAttributes errorAttributes) { 
    Assert.notNull(errorAttributes, "ErrorAttributes must not be null"); 
} 

@Override 
public String getErrorPath() { 
    return "/errorpage"; 
} 

@RequestMapping(produces = {"text/html"}) 
public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) { 
    response.setStatus(400); 
    return new ModelAndView("errorpage"); 
} 
} 

답변

1

편집 : 내 답변을 제출 한 후에 추가 한 것을 볼 수 있으므로이 기능이 작동하려면 콩 정의를 제거해야 할 수 있습니다.

당신의 치어에 thymeleaf 의존성을 추가, 당신의 봄 부트 버전에 따라

 <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-thymeleaf</artifactId> 
     </dependency> 

당신의 응용 프로그램 속성에이 중 하나를 추가 파일 :

error.whitelabel.enabled=false 

또는

server.error.whitelabel.enabled=false 

/src/main/resources/templates 폴더를 만듭니다.

error.html이라는 파일을 표시하려는 html로이 폴더에 추가하십시오.

우리가 한 일은 thymeleaf 템플릿 엔진을 사용하여 기본 error.html 파일을 사용하고 Spring 부트에 기본 화이트리스트 오류 페이지를 사용하지 말라고 명령했습니다.

+0

나를 위해 일하지 않는 =/내가 jsp와 함께 일하고 있다는 것을 언급하는 것을 잊었습니다, 그게 중요합니까? 나는 가능한 모든 오류가 json보다는 오히려이 오류 페이지로 이동하기를 원한다. – iCodeLikeImDrunk

+0

bean 정의를 제거 했습니까? – Andonaeus

+0

예. 나는 모든 것을 되돌리고 당신의 모범을 따랐습니다. 지금은 스프링 부트에 의해 제공되는 에러 콘트롤러를 시험해 보겠습니다. – iCodeLikeImDrunk

관련 문제