SpringMVC HTTP状态405 – 不支持请求方法“POST”

我有一个表单,我从该表单查询数据库,并发布到另一个页面与结果。 然后我从查询结果中选择一条记录,它将我带回到我进行查询的页面,以便我可以更新记录。

我点击更新,它将我带回控制器并使用相同的方法首先调用查询,但是请求的参数现在是’更新’,所以假设转到方法中的更新条件。 好像我无法将页面重新提交到相同的url映射。

调节器

@RequestMapping(value="citizen_registration.htm", method = RequestMethod.POST) public ModelAndView handleRequest(@Valid @ModelAttribute Citizens citizen, BindingResult result, ModelMap m, Model model, @RequestParam(value="user_request") String user_request) throws Exception { try{ logger.debug("In Http method for CitizenRegistrationController - Punishment Registration"); logger.debug("User Request Is " + user_request); if(result.hasErrors()){ //handle errors // return new ModelAndView("citizen_registration"); }else{ //check if its a save or an update if(user_request.equals("Save")) //do save else if (user_request.equals("Query")) //do query else if (user_request.equals("Update")) //do update } } 

错误日志

 34789 [http-bio-8084-exec-3] DEBUG org.springframework.web.servlet.DispatcherServlet - Bound request context to thread: org.apache.catalina.connector.RequestFacade@2ba3ece5 34791 [http-bio-8084-exec-3] DEBUG org.springframework.web.servlet.DispatcherServlet - DispatcherServlet with name 'crimetrack' processing POST request for [/crimeTrack/getCitizen/citizen_registration.htm] 34792 [http-bio-8084-exec-3] DEBUG org.springframework.web.servlet.DispatcherServlet - Testing handler map [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping@3a089b3] in DispatcherServlet with name 'crimetrack' 34792 [http-bio-8084-exec-3] DEBUG org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Looking up handler method for path /getCitizen/citizen_registration.htm 34796 [http-bio-8084-exec-3] DEBUG org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver - Resolving exception from handler [null]: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported 34796 [http-bio-8084-exec-3] DEBUG org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver - Resolving exception from handler [null]: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported 34796 [http-bio-8084-exec-3] DEBUG org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Resolving exception from handler [null]: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported 34796 [http-bio-8084-exec-3] WARN org.springframework.web.servlet.PageNotFound - Request method 'POST' not supported 34796 [http-bio-8084-exec-3] DEBUG org.springframework.web.servlet.DispatcherServlet - Null ModelAndView returned to DispatcherServlet with name 'crimetrack': assuming HandlerAdapter completed request handling 34796 [http-bio-8084-exec-3] DEBUG org.springframework.web.servlet.DispatcherServlet - Cleared thread-bound request context: org.apache.catalina.connector.RequestFacade@2ba3ece5 34796 [http-bio-8084-exec-3] DEBUG org.springframework.web.servlet.DispatcherServlet - Successfully completed request 34796 [http-bio-8084-exec-3] DEBUG org.springframework.web.context.support.XmlWebApplicationContext - Publishing event in WebApplicationContext for namespace 'crimetrack-servlet': ServletRequestHandledEvent: url=[/crimeTrack/getCitizen/citizen_registration.htm]; client=[127.0.0.1]; method=[POST]; servlet=[crimetrack]; session=[null]; user=[null]; time=[8ms]; status=[OK] 34796 [http-bio-8084-exec-3] DEBUG org.springframework.web.context.support.XmlWebApplicationContext - Publishing event in Root WebApplicationContext: ServletRequestHandledEvent: url=[/crimeTrack/getCitizen/citizen_registration.htm]; client=[127.0.0.1]; method=[POST]; servlet=[crimetrack]; session=[null]; user=[null]; time=[8ms]; status=[OK] 

萤火

检查FireBug我得到了这个"NetworkError: 405 Method Not Allowed - http://localhost:8084/crimeTrack/getCitizen/citizen_registration.htm"这应该是http://localhost:8084/crimeTrack /citizen_registration.htm“`

getCitizen是我在第一次执行查询时被带到的页面,它被包含在URL中。

我将jsp表单操作定义更改为<form:form id="citizenRegistration" name ="citizenRegistration" method="POST" commandName="citizens" action="/citizen_registration.htm">但是,当我启动应用程序并向此页面发出请求时,我得到:

 HTTP Status 500 - /WEB-INF/jsp/citizen_registration.jsp (line: 31, column: 116) attribute for %>" is not properly terminated 

 function submitPage(){ document.getElementById("citizenRegistration").action="getCitizen/citizen_registration.htm"; document.getElementById("citizenRegistration").target="_self"; document.getElementById("citizenRegistration").method = "POST"; document.getElementById("citizenRegistration").submit(); } 

您可以在提到上述方法时调用该方法。 使用onclick绑定提交按钮的function