@ExceptionHandler public RedirectView handle(PostMovedException moved) { RedirectView redirect = new RedirectView(); redirect.setStatusCode(HttpStatus.MOVED_PERMANENTLY); redirect.setUrl("/blog/" + moved.getPublicSlug()); return redirect; }
@Test public void explicitStatusCodeHttp10() throws Exception { RedirectView rv = new RedirectView(); rv.setUrl("http://url.somewhere.com"); rv.setStatusCode(HttpStatus.MOVED_PERMANENTLY); MockHttpServletRequest request = createRequest(); MockHttpServletResponse response = new MockHttpServletResponse(); rv.render(new HashMap<String, Object>(), request, response); assertEquals(301, response.getStatus()); assertEquals("http://url.somewhere.com", response.getHeader("Location")); }
/** * Resolves the view from the advanced search form, from search form under the menu in start page, * from categories or from tags AND from links to next/previous page and so on. * * @param advancedSearchData * @param bindingResult * @param model * @return * @throws UnsupportedEncodingException */ @RequestMapping(value = "/advanced_search/results", method = RequestMethod.GET) public ModelAndView getAdvancedSearchResults( @ModelAttribute("advancedSearchData") SearchData advancedSearchData, BindingResult bindingResult, Model model, HttpServletRequest httpRequest) throws UnsupportedEncodingException { LOG.debug( "------ getAdvancedSearchResults : get SEARCH RESULTS based on advanced search form -----"); if (advancedSearchData.getSearchTarget() == null) advancedSearchData.setSearchTarget("episodes"); SearchResult searchResult = searchService.getResultsForSearchCriteria(advancedSearchData); String redirectUrl = null; String tilesDef = null; ModelAndView mv; // no results found if (searchResult.getResults().isEmpty()) { bindingResult.rejectValue("queryText", "notFound", "not found"); redirectUrl = "/search/advanced_search?noResultsFound=true"; } else if (searchResult.getResults().size() > 1) { String query = httpRequest.getQueryString(); query = query.substring(0, query.lastIndexOf("¤tPage=")); model.addAttribute("queryString", query.replaceAll("&", "&")); model.addAttribute("advancedSearchResult", searchResult); tilesDef = "search_results_def"; } else { // exactly one result found (either podcast or episode), redirect to it redirectUrl = searchResult.getResults().get(0).getRelativeLink(); } if (tilesDef != null) { mv = new ModelAndView(); mv.setViewName(tilesDef); } else { // must be a redirect RedirectView rv = new RedirectView(); rv.setStatusCode(HttpStatus.MOVED_PERMANENTLY); rv.setUrl(redirectUrl); mv = new ModelAndView(rv); } return mv; }
@RequestMapping(value = "/check-user", method = RequestMethod.POST) public ModelAndView checkUser( Locale locale, @Valid @ModelAttribute("user") User user, BindingResult bindingResult, ModelMap modelMap, RedirectAttributes redirectAttributes) { ModelAndView modelAndView = new ModelAndView(); if (!bindingResult.hasErrors()) { RedirectView redirectView = new RedirectView("mainpage"); redirectView.setStatusCode(HttpStatus.MOVED_PERMANENTLY); modelAndView.setView(redirectView); redirectAttributes.addFlashAttribute( "locale", messageSource.getMessage("locale", new String[] {locale.getDisplayName(locale)}, locale)); } else { modelAndView.setViewName("login"); } return modelAndView; }