title: Can Spring MVC have request parameters for an HTTP PUT method, or must I use post? Which should I use to be RESTful?
body: <p>I have a controller action I think should be an HTTP PUT, but Spring is complaining when I try and use @RequestParam in the controller action. Is request parameters not allowed for HTTP PUT methods, and is that why Spring is rejecting it?</p>
  
  <pre><code>@RequestMapping(value = "/{helpDocumentId}/vote", method = RequestMethod.PUT)
  public void voteHelpfulness(@PathVariable long helpDocumentId, @RequestParam boolean isHelpful) {
      helpManager.voteOnHelpDocument(helpDocumentId, isHelpful);
  }
  </code></pre>
  
  <p>When executed, it throws this error:</p>
  
  <pre><code>org.springframework.web.bind.MissingServletRequestParameterException: Required boolean parameter 'isHelpful' is not present
  </code></pre>
  
  <p>Of course, the <code>isHelpful</code> parameter IS present. I can make the above code work perfectly for HTTP POST, so I know this isn't the problem.</p>
  
  <pre><code>     $.ajax({
              url: "/help/" + helpDocumentId + "/vote.json",
              type: "PUT",
              data: {
                  isHelpful: isHelpful
              },
              success: function(response) {
                  // ....
              }
       });
  </code></pre>
  
  <p>Is PUT the correct http method? This action modifies the <code>helpDocument</code>, but it doesn't create one.</p>