我正在嘗試使用Spring MVC帶註釋的控制器的示例項目。到目前爲止,我在網上找到的所有示例都將JSP綁定到特定模型,並且控制器使用@ModelAttribute
來檢查處理程序方法中的模型對象。在Spring MVC中將參數從JSP傳遞到控制器
我該如何着手將JSP中的其他參數(不存在於Model對象中)傳遞給Controller?我是否使用JavaScript來做到這一點?也有人可以澄清什麼HttpServletRequest
對象應該用於。
謝謝。
我正在嘗試使用Spring MVC帶註釋的控制器的示例項目。到目前爲止,我在網上找到的所有示例都將JSP綁定到特定模型,並且控制器使用@ModelAttribute
來檢查處理程序方法中的模型對象。在Spring MVC中將參數從JSP傳遞到控制器
我該如何着手將JSP中的其他參數(不存在於Model對象中)傳遞給Controller?我是否使用JavaScript來做到這一點?也有人可以澄清什麼HttpServletRequest
對象應該用於。
謝謝。
只需從jsp輸入標記中刪除「路徑」並使用HttpServletRequest來檢索剩餘的數據即可。
比如我有一個像
public class SomeData {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
然後,豆在jsp中我將有更多的數據字段,在正常的HTML標籤
<form:form method="post" action="somepage" commandName="somedata">
<table>
<tr>
<td>name</td>
<td><form:input path="name" /></td>
</tr>
<tr>
<td>age</td>
<!--Notice, this is normal html tag, will not be bound to an object -->
<td><input name="age" type="text"/></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="send"/>
</td>
</tr>
</table>
</form:form>
通知被髮送時,somedata豆有名字字段的年齡不是。所以年齡字段沒有「路徑」添加。沒有path屬性,對象屬性不會被綁定到這個字段。
上控制器I將不得不使用HttpServletRequest的像,
@RequestMapping("/somepage")
public String someAction(@ModelAttribute("somedata") SomeData data, Map<String, Object> map,
HttpServletRequest request) {
System.out.println("Name=" + data.getName() + " age=" + request.getParameter("age"));
/* do some process and send back the data */
map.put("somedata", data);
map.put("age", request.getParameter("age"));
return "somepage";
}
,同時訪問在視圖中的數據,
<table>
<tr>
<td>name</td>
<td>${somedata.name}</td>
</tr>
<tr>
<td>age</td>
<td>${age}</td>
</tr>
</table>
somedata是其提供的名稱屬性和年齡是bean由控制器明確設置屬性。
如果不想創建另一個類(bean),但它應該在那裏,那麼除了@ModelAttrbute
之外,還可以使用@RequestParam
。
public String someAction(@RequestParam("somedata") String data)
{
------
}
你也可以離開了@RequestParam註解如果請求參數的名稱對應方法參數名 – 2013-05-14 05:25:12
感謝名單在這個例子中它解決了我的問題 – Azuu 2013-02-02 09:27:42