2013-03-06 66 views
0

有人可以讓我知道如何從JSP訪問模型。如何從JSP刷新/訪問模型

這是我的控制器:

@RequestMapping(value = "/systemById", method = RequestMethod.GET) 
public void getSystemById(Model model, OutputStream outputStream) throws IOException { 
    model.addAttribute("fSystemName", "Test name"); 
    name = system.getName(); 
} 

JSP代碼:

$('#uINewsSystemList').change(function() { 
    $.get("/application/systemById"); 
); 

<form:form id="systemForm" commandName="systemForm"> 
<tr> 
    <td valign="top"><form:input path="fSystemName" value="${fSystemName}" size="20" />&nbsp;</td>      
</tr> 

我不能讓形式刷新一次,我已經添加了字符串模型。有任何想法嗎?

+0

你能解釋一下你想要做什麼嗎?您的JSP是與控制器關聯的視圖嗎?你想在'#uINewsSystemList'改變後動態更新表單嗎? – 2013-03-06 15:13:43

+0

是的,一旦他們從uINewsSystemList中選擇一個項目,它應該適當地更改表單中的值。並且是JSP是與控制器關聯的視圖 – maloney 2013-03-06 15:31:29

回答

3

當您根據用戶交互進行ajax調用時,您所調用的流程與您用於渲染頁面的原始JSP無關。

您可以讓getSystemById方法完全重新渲染頁面(可能通過表單提交/ POST),也可以更改示例代碼以實際返回必要數據以通過JavaScript進行更改。既然你提到你正在尋找動態更新變化可能是這個樣子:

@RequestMapping(value = "/systemById/${id}", method = RequestMethod.GET) 
public String getSystemById(@PathVariable String id) throws IOException { 
    //lookup new system data by id 
    Model model = someService.getModelById(id); 
    return model.getName(); //you can return more than just name, but then you will need some sort of conversion to handle that data (json, xml, etc.) 
} 

客戶端AJAX調用將需要設置有一個成功的功能在您使用返回的數據來更新UI。

$('#uINewsSystemList').change(function() { 
    var id = $(this).val(); 
    $.get("/application/systemById/" + id, function(returnedData){ 
     //use returnedData to refresh the ui. 
     $('selectorForSystemNameField').val(returnedData); 
    }); 
); 
+0

如果您的控制器已經設置爲期望字符串作爲視圖名稱,則您還需要getSystemById方法上的@ResponseBody註釋。 – purgatory101 2013-03-06 15:49:27