WHY SPRING MVC OPTIONALLY RETURNING NO VIEW IN A SINGLE MAPPING

Simons Hood

Total Post:70

Points:494
Posted by  Simons Hood
 1283  View(s)
Ratings:
Rate this:

I have a case where i need to :

  • Return a 304 not modified status if the blog hasnt been modified
  • Or return the blog view if it's been modified since If-Modified-Since request header

The problem is when i want to return 304 status, how do i tell spring mvc not to assume another view from the null return, and start sending the response with the status immediately ?

@RequestMapping(value={"/blogs/{blogId}"}, method=RequestMethod.GET)
public String hello(final HttpServletRequest req, final HttpServletResponse resp, final Model model,
        @PathVariable("blogId") final String blogId) {
    if (isModified(req, blogId)) {
        resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
        return null; // this doesnt stop spring mvc to assume a view name
    }
 
    populate(model, grabBlog(blogId));
    return "blog";
}

  1. Brad Pitt

    Post:61

    Points:429
    Re: Why spring MVC optionally returning no view in a single mapping

    From the HTTP perspective returning a view doesn't make sense at all. The Spring documentation covers that use case:

    @RequestMapping
    public String myHandleMethod(WebRequest webRequest, Model model) {
     
        long lastModified =// 1. application-specific calculation
     
        if (request.checkNotModified(lastModified)) {
            // 2. shortcut exit - no further processing necessary
            return null;
        }
     
        // 3. or otherwise further request processing, actually preparing content
        model.addAttribute(...);
        return "myViewName";
    }

     

      Modified On Apr-09-2018 01:00:23 AM

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!