2014-01-06 107 views
0

這真讓我困惑。 而是一個路徑變量{studentId}的價值正確的URL: 「http://somedomain.com:8080/someWebApp/essays/main/student/25/activity/add」(其中25爲路徑變量的{studentId}值) 我在我的網址得到: 「http://somedomain.com:8080/someWebApp/essays/main/student/%7BstudentId%7D/activity/addSpring MVC:路徑變量{studentId}無法正確顯示

這是我的控制器方法用於顯示一些testPage和正常工作:

@RequestMapping(value="/{studentId}/activity/add", method = RequestMethod.GET) 
    public String getForm(@PathVariable Integer studentId, Model model) { 

     StudentActivityDTO studentActivityDTO = new StudentActivityDTO(); 
     Student student = studentService.get(studentId); 
     studentActivityDTO.setStudent(student); 
     studentActivityDTO.getActivity().setEssayFlag("Essay"); 
     model.addAttribute("studentActivityDTO", studentActivityDTO); 
     model.addAttribute("courseList", courseService.getAll()); 
     model.addAttribute("teacherList", teacherService.getAll()); 

     return "testPage"; 
    } 

而這正是這個問題發生後控制器的方法:

@RequestMapping(value="/{studentId}/activity/add", method = RequestMethod.POST) 
    public String postForm(@ModelAttribute("studentActivityDTO") StudentActivityDTO studentActivityDTO, 
          @PathVariable Integer studentId, 
          Model model) { 

     logger.debug("Received request to add new activity to student"); 

     Activity activity = studentActivityDTO.getActivity(); 
     activityService.add(studentId, activity); 

     return "success/addActivitySuccess"; 
    } 

@PathVariable工作正常,第一種情況,在第二種情況下,給出了這樣的錯誤:

Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: "{studentId}" 

,而不是在URL作爲{studentId}的一些價值,我得到的字符串「{} studentId」。

有人可以告訴我爲什麼嗎?

更新:這是JSP頁面的重要組成部分(這是一個相當大的頁面):

<c:url var="studentUrl" value="/essays/main/student/{studentId}/activity/add" /> 
<form:form modelAttribute="studentActivityDTO" method="POST" action="${studentUrl}"> 
... 
<input type="submit" value="Submit" /> 
</form:form> 
+1

我不明白。你在哪裏生成該網址? –

+0

@SotiriosDelimanolis我從這個URL開始作爲入口點:http://somedomain.com:8080/someWebApp/essays/main/student/search和當我瀏覽應用程序,當我點擊提交按鈕時,我得到了那個錯誤的URL帶有{studentId}字符串。直到我按下提交按鈕,一切正常。 –

+0

由於問題出現在後控制器方法中,請向我們展示發送表單的JSP頁面以及如何創建表單標記的操作屬性。 – t0mppa

回答

1

也許你想

<c:url var="studentUrl" value="/essays/main/student/${studentActivityDTO.student.id}/activity/add" />