我正在寫單頁Spring MVC
應用程序。重新加載頁面的部分按鈕點擊,刷新整個頁面上新的URL
要求:
- 我希望它根據輸入的URL改變頁面的狀態。
- 我希望它通過點擊一個按鈕來改變頁面的狀態。
使用範例:
如果我輸入一個URL 「my.site.com/」,我只想要我的網站骨架被加載,沒有數據的
User
。 (User
是我的模型中的一個對象)。如果我輸入一個URL「my.site.com/users/John」,我想顯示爲「約翰」的數據(頁面可以重新加載)。
- 如果我在
textbox
輸入字符串「約翰」,並按下按鈕Go!
,我想只顯示用戶數據頁面的部分是刷新和沒有重載整個頁面。
設計問題:
我明白,1)和2)我需要返回一個新ModelAndView
對象,併爲3)我可以使用AJAX
。這可能意味着我需要三種控制器方法。
我不知道的是如何避免衝突的URL中的MVC和AJAX控制方法,以及如何實際然後打電話給我AJAX
控制器的方法從Javascript,而不是ModelAndView
控制器方法之間。
代碼示例:
什麼,我需要的是這樣的,除了這一點,當然,導致衝突的網址。
/*
* Default view.
*/
@RequestMapping(value = "/users")
public ModelAndView displayDefault() {
return new ModelAndView("userdisplay_default.jsp");
}
/*
* View for a specific user.
*/
@RequestMapping(value = "https://stackoverflow.com/users/{username}")
public ModelAndView displaySpecific(@PathVariable(value = "username") String username) {
User user = new User(username);
return new ModelAndView("userdisplay_specific.jsp", "Specific User", user);
}
/*
* AJAX controller method.
*/
@RequestMapping(value = "https://stackoverflow.com/users/{username}", produces = "application/json", method = RequestMethod.GET)
public @ResponseBody User getTime(@PathVariable(value = "username") String username) {
return new User(username);
}
在Javascript中我會再取POJO
這樣的:
// obtain user
var user = $('#user_input').val(); // this is a text input
$.getJSON("https://stackoverflow.com/users/"+user, function() {
//...
});
注:我試圖做到這一點可能是錯// //不足不是最佳的方式,所以請隨時也可以免費提供一些關於如何做到這一點的其他方法。
請給我一個解釋以及代碼示例我應該如何完成?