簡體   English   中英

在Spring MVC中將參數從JSP傳遞到Controller

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM