2009-09-02 89 views
1

這是在Spring MVC使用ThrowawayController的例子:Spring MVC中的ThrowawayController如何從請求中獲取參數?

public class DisplayCourseController 
    implements ThrowawayController { 
    private Integer id; 
    public void setId(Integer id) { this.id = id; } 
    public ModelAndView execute() throws Exception { 
    Course course = courseService.getCourse(id);      
    return new ModelAndView("courseDetail", "course", course); 
    } 
    private CourseService courseService; 
    public void setCourseService(CourseService courseService) { 
    this.courseService = courseService; 
    } 
} 

憑藉其在XML文件中的聲明:

<bean id="displayCourseController" 
    class="com.spring.mvc.DisplayCourseController" 
    singleton="false"> 
    <property name="courseService"> 
    <ref bean="courseService"/> 
    </property> 
</bean> 

這兩個兩段代碼的不指定如何參數ID找到請求中的。任何人都可以告訴我它是如何工作的嗎?

編輯: 我覺得邏輯可能會被使用getParameterNames()的getParameter()檢索所有參數,並使用Java反射來獲取相應的setter。

謝謝。

+1

如果你使用Spring 2.5,那麼你不應該使用ThrowawayController,它將在Spring 3中被刪除。 – skaffman

+0

你們都提到它。我會牢記這一點。謝謝。 –

回答

1

其實我不得不尋找這個類,所以,如果你還在使用它,要知道,它甚至沒有出現在春季3

ThrowawayControllerHandlerAdapter的Javadoc

此實現綁定請求 參數給ThrowawayController 實例,然後對其執行調用。

所以,我會說處理程序適配器使用標準屬性編輯器將命名的請求參數轉換爲setX方法中指定的類型。

您可以通過在上面的示例代碼中傳遞一個無效的數字作爲請求中的id來確認此問題,例如:foo?id = not-a-number,並查看拋出異常的位置。

+0

謝謝。似乎我們有同樣的猜測。我會試一試,看看會發生什麼。 –

1

也許界面「org.springframework.web.servlet.mvc.throwaway.ThrowawayController」是因爲Spring3.1.x

你爲什麼不使用註釋去掉?

相關問題