Spring,不支持请求方法’POST’

首先要道歉请问这个反复的问题..

实际上在我的春季应用程序中我有user.jspprofessional.jsp

这是我的User.jsp:

  

这是我的professional.jsp:

    

这是我的Controller类:

  @Controller @RequestMapping(value = "profile") public class UserProfileController { @Autowired private UserService userService; @Autowired private SessionData sessionData; @RequestMapping(value = "user", method = RequestMethod.GET) public String user(Model model) throws Exception { model.addAttribute("PROFESSIONAL", new UserProfessionalForm()); model.addAttribute("EDUCATIONAL", new UserEducationalForm()); model.addAttribute("AWARDS", new UserAwardsForm()); return "profile/user"; } @RequestMapping(value = "proffessional", method = RequestMethod.POST) public @ResponseBody String forgotPassword(UserProfessionalForm professionalForm, BindingResult result, Model model) { UserProfileVO userProfileVO = new UserProfileVO(); userProfileVO.setUser(sessionData.getUser()); userService.saveUserProfile(userProfileVO); model.addAttribute("professional", professionalForm); return "Your Professional Details Updated"; } } 

Problem是当我们在professional.jsp中单击“ Add按钮时,服务器控制台中没有响应,但显示的警告消息如下:

  29 Mar, 2013 1:03:51 PM org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleHttpRequestMethodNotSupported WARNING: Request method 'POST' not supported 

为什么会出现此警告? 我已经指定method =“POST”..

请帮忙..

你的user.jsp:

   --- ---  

在您的控制器类中:

(把它作为一个意思是完整的方法名称。我认为你是在DB中插入记录。)

 @RequestMapping(value = "proffessional", method = RequestMethod.POST) public @ResponseBody String proffessionalDetails( @ModelAttribute UserProfessionalForm professionalForm, BindingResult result, Model model) { UserProfileVO userProfileVO = new UserProfileVO(); userProfileVO.setUser(sessionData.getUser()); userService.saveUserProfile(userProfileVO); model.addAttribute("PROFESSIONAL", professionalForm); return "Your Professional Details Updated"; } 

在Jsp中:

 action="profile/proffiesional" 

在控制器中

 @RequestMapping(value = "proffessional", method = RequestMethod.POST) 

拼写MisMatch!

我在sprint安全xml文件中启用了csrf,所以我只在表单中添加了一行:

  

这样我就可以提交具有model属性的表单。

您在forgotPassword方法中forgotPassword UserProfessionalForm professionalForm参数的@ModelAttribute注释。

 @RequestMapping(value = "proffessional", method = RequestMethod.POST) public @ResponseBody String forgotPassword(@ModelAttribute UserProfessionalForm professionalForm, BindingResult result, Model model) { UserProfileVO userProfileVO = new UserProfileVO(); userProfileVO.setUser(sessionData.getUser()); userService.saveUserProfile(userProfileVO); model.addAttribute("professional", professionalForm); return "Your Professional Details Updated"; } 

尝试这个

 @RequestMapping(value = "proffessional", method = RequestMethod.POST) public @ResponseBody String forgotPassword(@ModelAttribute("PROFESSIONAL") UserProfessionalForm professionalForm, BindingResult result, Model model) { UserProfileVO userProfileVO = new UserProfileVO(); userProfileVO.setUser(sessionData.getUser()); userService.saveUserProfile(userProfileVO); model.addAttribute("professional", professionalForm); return "Your Professional Details Updated"; } 

有关信息,我删除了动作属性,当我调用ajaxpost时,我收到此错误。即使我在表单中的动作属性看起来像这个action="javascript://;"

我以为我从ajax调用中获取了它并序列化了表单但是我再次将伪动作属性添加到表单中并且它起作用了。