[英]Passing parameters from JSP to Controller in Spring MVC
我正在嘗試使用Spring MVC帶注釋的控制器的示例項目。 到目前為止,我在網上找到的所有示例都將JSP綁定到特定模型,控制器使用@ModelAttribute
來檢索處理程序方法中的模型對象。
如何將其他參數(不存在於Model對象中)從JSP傳遞給Controller? 我是否使用JavaScript來執行此操作? 也有人可以澄清HttpServletRequest
對象應該用於什么。
謝謝。
只需從jsp輸入標記中刪除“path”,然后使用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 bean具有年齡不是的名稱字段。 因此,添加年齡字段時沒有“路徑”。 如果沒有path屬性,則對象屬性不會綁定到此字段。
在Controller上我將不得不使用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是提供name屬性的bean,age是控制器顯式設置的屬性。
如果一個人不想創建另一個類(bean),盡管它應該在那里,那么除了@ModelAttrbute
之外,還可以使用@RequestParam
。
public String someAction(@RequestParam("somedata") String data)
{
------
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.