2012-04-07 164 views
1

我使用Spring MVC 3来设置和处理表单,但我遇到了这个问题,在使用Spring MVC 3提交表单时我从来没有这样做,并且我无法理解背后的原因。Spring MVC 3:HTTP状态405 - 不支持请求方法'POST'

当我提交表单时,我得到一个HTTP状态405 - 请求方法'POST'不支持错误。 以下是我用来使它工作的.jsp窗体和控制器。

newProblem.jsp

<form:form commandName="problem" > 
     <form:label path="problem" > 
      <span class="label">Problem <form:errors path="problem" /></span> 
     </form:label> 
     <form:textarea path="problem" cssClass="editor" id="editor"/> 


     <input type="submit" value="create" /> 
</form:form> 

ProblemManagementController.java

//Add new problem (GET) 
@RequestMapping(method=RequestMethod.GET, value="/admin/problems/new") 
public String setUpForm(Model model) { 
    model.addAttribute("problem", new Problem()); 
    return "newProblem"; 
} 

//Add new problem (POST) 
@RequestMapping(method=RequestMethod.POST, value="/admin/problems/new") 
public String processForm(@Valid Problem problem, Errors result) { 
    if(result.hasErrors()) { 
     return "newProblem"; 
    } 
    problemManagementService.createProblem(problem); 
    return "redirect:/admin/problems"; 
} 

//Display all problems 
@RequestMapping(value="/admin/problems") 
public String displayAllProblems(Model model) { 
    List<Problem> allProblems = problemManagementService.getAllProblems(); 

    model.addAttribute("allProblems", allProblems); 
    return "allProblems"; 
} 

有人能帮助我了解为什么我收到此错误?

+0

对于某些原因,Eclipse IDE中未读'processForm'和'displayAllProblems'方法。清理服务器和项目后,然后重新部署项目到服务器让它工作。 – skip 2012-04-07 23:26:38

回答

0

您忘记在<form:form>标记中添加动作。

试试这个:

<form:form action="admin/problems/new" commandName="problem" > 
     <form:label path="problem" > 
      <span class="label">Problem <form:errors path="problem" /></span> 
     </form:label> 
     <form:textarea path="problem" cssClass="editor" id="editor"/> 


     <input type="submit" value="create" /> 
</form:form> 
相关问题