Spring MVC de Statut HTTP 405 - Demande de la méthode "POST" pas pris en charge colonne vertébrale de la Demande

Je suis nouveau à Spring MVC et je suis en train de créer une Application Web à partir de zéro à l'aide de Spring MVC + Hibernate pour servir à quelque chose comme un JSON API Rest, avoir cette API consommés à travers l'épine Dorsale du côté client. Pour ce faire, j'ai commencé à suivre ce tutoriel ( http://www.mkyong.com/spring-mvc/spring-3-mvc-and-json-example/ ) .

So I have a model Message which will have the following REST API Interface:
GET /api/messages               ( working ok )
GET /api/messages/:id           ( working ok )
DELETE /api/messages/:id        ( working ok )
PUT /api/messages/:id           ( working ok )
POST /api/messages              ( error: (DefaultHandlerExceptionResolver.java:194) - Request method 'POST' not supported)

Je m'attendais à ce problème se pose pour METTRE ou SUPPRIMER des demandes en faisant la demande via un formulaire, mais pas pour une requête POST. Je ne suis même pas faire la demande via un formulaire. Du côté client, la demande se fait par le biais de la Dorsale comme ceci:

new App.Models.Message({ attributeA : 'a', attributeB : 'b' }).save();

J'ai déjà essayé d'ajouter l'httpMethodFilter à web.xml comme suggéré dans d'autres Stackoverflow questions:

 <filter>
    <filter-name>httpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
 </filter>

 <filter-mapping>
    <filter-name>httpMethodFilter</filter-name>
    <servlet-name>mvc-dispatcher</servlet-name>
 </filter-mapping>  

Quelqu'un a eu le même problème?

Je laisse ici mon MessagesController:

@Controller
@RequestMapping("/api/messages")
public class MessagesController {
@Autowired  
private MessageService messageService;
@RequestMapping(method = RequestMethod.GET)
public @ResponseBody List<Message> getMessagesInJSON(@RequestParam( value = "type", required = false ) String type) {   
List<Message> messages = messageService.findAll();          
return messages; 
}
@RequestMapping( value = "/{id}", method = RequestMethod.GET )
public @ResponseBody Message getMessageInJson(@PathVariable Integer id ) {      
Message message = messageService.findById(id);
return message;     
}
@RequestMapping( value = "/{id}", method = RequestMethod.DELETE )
@ResponseStatus( value = HttpStatus.NO_CONTENT )
public void deleteMessage(@PathVariable Integer id ) throws NotFoundException {     
messageService.delete(id);      
}
@RequestMapping( value = "/{id}", method = RequestMethod.PUT )
@ResponseStatus( value = HttpStatus.NO_CONTENT )
public void editMessage( @PathVariable Integer id, @RequestBody Message message ) throws NotFoundException {
message.setId(id);
messageService.update(message);
}
@RequestMapping( value = "/", method = RequestMethod.POST )
@ResponseStatus(HttpStatus.CREATED)
public @ResponseBody Message createMessage( @RequestBody Message message ) {        
return messageService.create(message);
}
}

Merci beaucoup!

OriginalL'auteur jantunes | 2013-11-13