參數(shù)綁定

默認支持的參數(shù)類型
處理器形參中添加如下類型的參數(shù)處理適配器會默認識別并進行賦值切油。
1.HttpServletRequest
通過request對象獲取請求信息
2.HttpServletResponse
通過response處理響應信息
3.HttpSession
通過session對象得到session中存放的對象
4.Model/ModelMap
ModelMap是Model接口的實現(xiàn)類辫呻,通過Model或ModelMap向頁面?zhèn)鬟f數(shù)據(jù)

調(diào)用service查詢商品信息

Items item = itemService.findItemById(id);
model.addAttribute("item", item);

頁面通過${item.XXXX}獲取item對象的屬性值碱璃。
使用Model和ModelMap的效果一樣仑撞,如果直接使用Model煞聪,springmvc會實例化ModelMap悴品。

參數(shù)綁定介紹

注解適配器對RequestMapping標記的方法進行適配贷币,對方法中的形參會進行參數(shù)綁定怔匣,早期springmvc采用PropertyEditor(屬性編輯器)進行參數(shù)綁定將request請求的參數(shù)綁定到方法形參上握联,3.X之后springmvc就開始使用Converter進行參數(shù)綁定。

簡單類型
當請求的參數(shù)名稱和處理器形參名稱一致時會將請求參數(shù)與形參進行綁定每瞒。
整型

public String editItem(Model model,Integer id) throws Exception{
}```
字符串

單精度/雙精度

布爾型

public String editItem(Model model,Integer id,Boolean status) throws Exception

請求url:http://localhost:8080/springmvc_mybatis/item/editItem.action?id=2&status=false
說明:對于布爾類型的參數(shù)金闽,請求的參數(shù)值為true或false。

@RequestParam 
使用@RequestParam常用于處理簡單類型的綁定剿骨。
value:參數(shù)名字代芜,即入?yún)⒌恼埱髤?shù)名字,如value=“item_id”表示請求的參數(shù)區(qū)中的名字為item_id的參數(shù)的值將傳入浓利;
required:是否必須挤庇,默認是true,表示請求中一定要有相應的參數(shù)贷掖,否則將報嫡秕;
defaultValue:默認值,表示如果請求中沒有同名參數(shù)時的默認值

public String editItem(@RequestParam(value="item_id",required=true) String id) {

}```

形參名稱為id苹威,但是這里使用value=" item_id"限定請求的參數(shù)名為item_id昆咽,所以頁面?zhèn)鬟f參數(shù)的名必須為item_id。

這里通過required=true限定item_id參數(shù)為必需傳遞,如果不傳遞則報400錯誤掷酗,可以使用defaultvalue設置默認值调违,即使required=true也可以不傳item_id參數(shù)值

pojo
簡單pojo
將pojo對象中的屬性名于傳遞進來的屬性名對應,如果傳進來的參數(shù)名稱和對象中的屬性名稱一致則將參數(shù)值設置在pojo對象中

頁面定義如下;

<input type="text" name="name"/>
<input type="text" name="price"/>

Contrller方法定義如下:

@RequestMapping("/editItemSubmit")
    public String editItemSubmit(Items items)throws Exception{
    System.out.println(items);```
請求的參數(shù)名稱和pojo的屬性名稱一致泻轰,會自動將請求參數(shù)賦值給pojo的屬性技肩。

包裝pojo

包裝對象定義如下:

Public class QueryVo {
private Items items;

}

頁面定義:

<input type="text" name="items.name" />
<input type="text" name="items.price" />

Controller方法定義如下:

public String useraddsubmit(Model model,QueryVo queryVo)throws Exception{
System.out.println(queryVo.getItems());







自定義參數(shù)綁定
需求
根據(jù)業(yè)務需求自定義日期格式進行參數(shù)綁定。

Converter
自定義Converter

public class CustomDateConverter implements Converter<String, Date> {

@Override
public Date convert(String source) {
    try {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return simpleDateFormat.parse(source);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

}```

配置方式

<mvc:annotation-driven conversion-service="conversionService">
</mvc:annotation-driven>
<!-- conversionService -->
    <bean id="conversionService"
        class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <!-- 轉(zhuǎn)換器 -->
        <property name="converters">
            <list>
                <bean class="cn.itcast.ssm.controller.converter.CustomDateConverter"/>
            </list>
        </property>
    </bean>```

集合類
字符串數(shù)組
頁面定義如下:

頁面選中多個checkbox向controller方法傳遞
<input type="checkbox" name="item_id" value="001"/>
<input type="checkbox" name="item_id" value="002"/>
<input type="checkbox" name="item_id" value="002"/>


傳遞到controller方法中的格式是:001,002,003

Controller方法中可以用String[]接收浮声,定義如下:

public String deleteitem(String[] item_id)throws Exception{
System.out.println(item_id);
}```

List
List中存放對象亩鬼,并將定義的List放在包裝類中,action使用包裝對象接收阿蝶。

List中對象:
成績對象

Public class QueryVo {
Private List<Items> itemList;//商品列表

  //get/set方法..
}```


包裝類中定義List對象,并添加get/set方法如下:

頁面定義如下:

<tr>
<td>
<input type="text" name=" itemsList[0].id" value="${item.id}"/>
</td>
<td>
<input type="text" name=" itemsList[0].name" value="${item.name }"/>
</td>
<td>
<input type="text" name=" itemsList[0].price" value="${item.price}"/>
</td>
</tr>
<tr>
<td>
<input type="text" name=" itemsList[1].id" value="${item.id}"/>
</td>
<td>
<input type="text" name=" itemsList[1].name" value="${item.name }"/>
</td>
<td>
<input type="text" name=" itemsList[1].price" value="${item.price}"/>
</td>
</tr>```

上邊的靜態(tài)代碼改為動態(tài)jsp代碼如下:

<c:forEach items="${itemsList }" var="item" varStatus="s">
<tr>
    <td><input type="text" name="itemsList[${s.index }].name" value="${item.name }"/></td>
    <td><input type="text" name="itemsList[${s.index }].price" value="${item.price }"/></td>
    .....
    .....
</tr>
</c:forEach>```


Contrller方法定義如下:

public String useraddsubmit(Model model,QueryVo queryVo)throws Exception{
System.out.println(queryVo.getItemList());
}```

Map
在包裝類中定義Map對象黄绩,并添加get/set方法羡洁,action使用包裝對象接收。
包裝類中定義Map對象如下:

Public class QueryVo {
private Map<String, Object> itemInfo = new HashMap<String, Object>();
  //get/set方法..
}```



頁面定義如下:

<tr>
<td>學生信息:</td>
<td>
姓名:<inputtype="text"name="itemInfo['name']"/>
年齡:<inputtype="text"name="itemInfo['price']"/>
.. .. ..
</td>
</tr>```

Contrller方法定義如下:

public String useraddsubmit(Model model,QueryVo queryVo)throws Exception{
System.out.println(queryVo.getIteminfo());
}```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末爽丹,一起剝皮案震驚了整個濱河市筑煮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粤蝎,老刑警劉巖真仲,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異初澎,居然都是意外死亡秸应,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門碑宴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來软啼,“玉大人,你說我怎么就攤上這事延柠』雠玻” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵贞间,是天一觀的道長贿条。 經(jīng)常有香客問我,道長增热,這世上最難降的妖魔是什么整以? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮钓葫,結(jié)果婚禮上悄蕾,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好帆调,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布奠骄。 她就那樣靜靜地躺著,像睡著了一般番刊。 火紅的嫁衣襯著肌膚如雪含鳞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天芹务,我揣著相機與錄音蝉绷,去河邊找鬼。 笑死枣抱,一個胖子當著我的面吹牛熔吗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播佳晶,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼桅狠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了轿秧?” 一聲冷哼從身側(cè)響起中跌,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎菇篡,沒想到半個月后漩符,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡驱还,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年嗜暴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片议蟆。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡灼伤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咪鲜,到底是詐尸還是另有隱情狐赡,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布疟丙,位于F島的核電站颖侄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏享郊。R本人自食惡果不足惜览祖,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望炊琉。 院中可真熱鬧展蒂,春花似錦又活、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至箕般,卻和暖如春耐薯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背丝里。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工曲初, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人杯聚。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓臼婆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親幌绍。 傳聞我的和親對象是個殘疾皇子目锭,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)纷捞,斷路器,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 本文預計需要10分鐘閱讀 專題簡介 SpringBoot之路專題是一個記錄本人在使用Spring和SpringBo...
    BeeNoisy閱讀 3,497評論 3 7
  • 從客戶端請求 key/value 數(shù)據(jù),經(jīng)過參數(shù)綁定,將 key/value數(shù)據(jù)綁定到Handler方法的形參上....
    我相信你愛過gg閱讀 698評論 0 0
  • 轉(zhuǎn)自:http://blog.csdn.net/walkerjong/article/details/794610...
    光光李閱讀 527評論 0 2
  • 臺風天 風嗚嗚的吹 我開始想你 雨天 特別的讓人沉迷 望著細雨發(fā)發(fā)呆 敲敲字 把對你的思念一點點記錄 忙的時候沒時...
    好西好閱讀 160評論 0 0