Триггер 404 в контроллере Spring-MVC? - PullRequest
170 голосов
/ 14 января 2010

Как получить контроллер Spring 3.0 для запуска 404?

У меня есть контроллер с @RequestMapping(value = "/**", method = RequestMethod.GET) и для некоторых URL-адресов , обращающихся к контроллеру, я хочу, чтобы контейнер выдавал 404.

Ответы [ 13 ]

1 голос
/ 04 сентября 2017

Также, если вы хотите вернуть статус 404 с вашего контроллера, все, что вам нужно, это сделать

@RequestMapping(value = "/somthing", method = RequestMethod.POST)
@ResponseBody
public HttpStatus doSomthing(@RequestBody String employeeId) {
    try{
  return HttpStatus.OK;
    } 
    catch(Exception ex){ 
  return HttpStatus.NOT_FOUND;
    }
}

При этом вы получите ошибку 404 в случае, если вы хотите вернуть 404 с вашего контроллера.

0 голосов
/ 29 апреля 2014

Сконфигурируйте web.xml с настройкой

<error-page>
    <error-code>500</error-code>
    <location>/error/500</location>
</error-page>

<error-page>
    <error-code>404</error-code>
    <location>/error/404</location>
</error-page>

Создать новый контроллер

   /**
     * Error Controller. handles the calls for 404, 500 and 401 HTTP Status codes.
     */
    @Controller
    @RequestMapping(value = ErrorController.ERROR_URL, produces = MediaType.APPLICATION_XHTML_XML_VALUE)
    public class ErrorController {


        /**
         * The constant ERROR_URL.
         */
        public static final String ERROR_URL = "/error";


        /**
         * The constant TILE_ERROR.
         */
        public static final String TILE_ERROR = "error.page";


        /**
         * Page Not Found.
         *
         * @return Home Page
         */
        @RequestMapping(value = "/404", produces = MediaType.APPLICATION_XHTML_XML_VALUE)
        public ModelAndView notFound() {

            ModelAndView model = new ModelAndView(TILE_ERROR);
            model.addObject("message", "The page you requested could not be found. This location may not be current.");

            return model;
        }

        /**
         * Error page.
         *
         * @return the model and view
         */
        @RequestMapping(value = "/500", produces = MediaType.APPLICATION_XHTML_XML_VALUE)
        public ModelAndView errorPage() {
            ModelAndView model = new ModelAndView(TILE_ERROR);
            model.addObject("message", "The page you requested could not be found. This location may not be current, due to the recent site redesign.");

            return model;
        }
}
0 голосов
/ 06 ноября 2012

Просто вы можете использовать web.xml, чтобы добавить код ошибки и страницу ошибки 404. Но убедитесь, что страница ошибки 404 не должна находиться под WEB-INF.

<error-page>
    <error-code>404</error-code>
    <location>/404.html</location>
</error-page>

Это самый простой способ сделать это, но у него есть некоторые ограничения. Предположим, если вы хотите добавить для этой страницы тот же стиль, что и для других страниц. Таким образом, вы не можете к этому. Вы должны использовать @ResponseStatus(value = HttpStatus.NOT_FOUND)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...