В настоящее время я работаю над приложением с весенней загрузкой. Мои пользовательские данные хранятся в репозитории. Обычно я прикрепляю данные пользователя к каждому контроллеру (это необходимо, если пользователь аутентифицирован). Но если я введу несопоставленный URL-адрес, данные не будут переданы по логике, и моя страница с ошибкой 404 не загрузится правильно.
Я не могу просто использовать
@RequestMapping(value = "**",method = RequestMethod.GET)
public String getAnythingelse(){
return "redirect:/404.html";
}
потому что я обрабатываю свои URL-адреса для разных классов контроллеров.
Это приводит к вопросу, как я могу решить эту проблему?
У меня было бы две теоретические попытки, но я не знаю, как бы это сделать: 1) Каким-то образом присвойте методу map-something очень низкий приоритет, чтобы он был вызван в конце. 2) Вызовите метод map-something, кроме того, как заставить систему вызывать и другие методы.
Обновлено: даже если я добавлю его, например, мой контроллер индекса, он сделает сайт полностью неформатированным.




Что ж, вы можете создать DefaultController для своего проекта и использовать аннотацию RequestMapping поверх этого. Я пробовал этот фрагмент кода:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "**")
public class DefaultController {
@RequestMapping(method = RequestMethod.GET)
public String getAnythingElse(){
return "redirect:/404.html";
}
}
Я думаю, что он делает именно то, что вы хотите, но в моем случае это прерывает мою чванливость.
Я думаю, что этот код может помочь вам создать собственную страницу с ошибкой: https://gist.github.com/jonikarppinen/662c38fb57a23de61c8b
Это не будет работать для
@RestController, но только для@Controller.