2012-04-07 239 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> 
相關問題