@在spring boot mvc中,controlleradvice在异常之后不重定向404页

cigdeys3  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(357)

我正在使用@controlleradvice,但是id不起作用,我不知道为什么。它是@controlleradvice:

@ControllerAdvice
public class MainControllerAdvice {
    private final static Logger log = LoggerFactory.getLogger(MainControllerAdvice.class);

    @ExceptionHandler(value = DataNotFoundException.class)
    public String handleNotFound(){
        return "not-found";
    }
}

自定义异常:

@ResponseStatus(value= HttpStatus.NOT_FOUND, reason="No such data")
public class DataNotFoundException extends RuntimeException {
    public DataNotFoundException() {
        super();
    }
}

和控制器:

@GetMapping(value = "/details/{id}")
public String details(@PathVariable Integer id, Model model) throws DataNotFoundException {
    Pupil pupil = pupilService.get(id);
    if (pupil == null) {
        throw new DataNotFoundException();
    }
    model.addAttribute("pupil", pupil);
    return "details";
}

我做错了什么?

2ic8powd

2ic8powd1#

基本上,您希望返回一个视图名称并将其呈现为显示自定义错误页。如果您使用的是服务器端模板引擎,例如 Thymeleaf 在springboot应用程序中,在templates文件夹中添加自定义页面并进行以下更改。

@ControllerAdvice
public class MainControllerAdvice {

    @ExceptionHandler(value = DataNotFoundException.class)
    public ModelAndView handleNotFound() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("not-found");
        return modelAndView;
    }

}

将自定义错误页放在 templates 与中设置的名称相同的文件夹 ModelAndView 对象。

Spring起动器 thymeleaf ```

org.springframework.boot
spring-boot-starter-thymeleaf

相关问题