本文介紹bboss mvc 控制器方法參數綁定技巧-Map類型參數綁定的使用方法,切入正題。
1、概述
Map類型參數綁定有兩種方式:
方式一 Map<String,String>方式,直接将Request對象中的參數轉儲到Map對象中
方式二 Map<String,Bean>方式,這種方式用來将多條記錄轉換為Bean類型值對象,然後根據@MapKey中指定記錄字段的值作為Map的key值,Bean對象作為value,形成一個Map對象作為控制器方法參數。
除了介紹這兩種Map參數綁定方式外,我們還會介紹如何在jsp中結合map标簽/mapkey标簽來展示map類型的資料。
下面直接介紹這些功能
2、功能詳解
2.1、方式一 Map<String,String>方式
首先看表單的寫法,兩個參數name和sex:
<form action="sayHelloStringMap.page" method="post">
<table cellspacing="0" >
<tbody>
<tr><td>
請輸入您的名字:
<input name="name" type="text">
</td> <td>
請輸入您的性别:
<input name="sex" type="text">
</td>
</tr> </tbody>
</table> </form>
控制方法的寫法,Map params即為request中的所有參數的轉儲:
public String sayHelloStringMap(Map params,
ModelMap model)
{
//我們直接把params傳遞到jsp頁面上,用map标簽進行展示
model.addAttribute("serverHelloMapBean", params);
return "path:sayHello";
}
jsp中用map标簽進行展示params中key和value的方法:
<table>
<h3>map<String,String>字元串資訊疊代功能</h3>
<pg:map requestKey="mapstrings"> <tr class="cms_data_tr">
<td>
mapkey:<pg:mapkey/>
</td>
<td>
value:<pg:cell/>
</td>
</tr>
</pg:map> </table>
2.2、方式二 Map<String,Bean>方式
首先看表單的寫法,我們在表單裡面放置多個name和sex參數,以便模拟形成多個記錄的Bean對象,我們的Bean對象ExampleBean的結構也非常簡單,就包含name和sex兩個屬性:
表單代碼
<form action="sayHelloBeanMap.page" method="post">
<table cellspacing="0" >
<tbody> <tr> <td>
請輸入您的名字:
<input name="name" type="text">
</td>
<td>
請輸入您的性别:
<input name="sex" type="text">
</td>
</tr>
<tr>
<td>
請輸入您的名字:
<input name="name" type="text">
</td>
<td>
請輸入您的性别:
<input name="sex" type="text">
</td>
</tr> <tr> <td>
請輸入您的名字:
<input name="name" type="text">
</td>
<td>
請輸入您的性别:
<input name="sex" type="text">
</td>
</tr>
<tr><td>
請輸入您的名字:
<input name="name" type="text">
</td>
<td>
請輸入您的性别:
<input name="sex" type="text">
</td>
</tr>
<tr>
<td>
請輸入您的名字:
<input name="name" type="text">
</td>
<td>
請輸入您的性别:
<input name="sex" type="text">
</td>
</tr>
<tr>
<td><input type="submit" name="确定" value="确定"></td> </tr>
</tbody>
</table> </form>
ExampleBean代碼:
public class ExampleBean
{
private String name = null;
private String sex = null;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getSex()
{
return sex;
}
public void setSex(String sex)
{
this.sex = sex;
}
}
控制方法的寫法:
public String sayHelloBeanMap(@MapKey("name") Map<String, ExampleBean> mapBeans, ModelMap model)
{
model.addAttribute("serverHelloMapBean", mapBeans);
return "path:sayHello";
}
我們用注解@MapKey("name") 聲明了Map參數中key以name字段的值作為key,通過Map<String, ExampleBean> 中的泛型資訊指定每條記錄将被綁定的Bean對象的類型,這裡是ExampleBean,控制方法的邏輯非常簡單,直接将綁定好的參數mapBeans交給jsp頁面
jsp中用map标簽進行展示mapBeans中key和ExampleBean的方法:
<table>
<tr> <td>
<pg:map requestKey="serverHelloMapBean" > <ul><li> mapkey: <pg:mapkey/></li> <li>name屬性值:<pg:cell colName="name"/></li> <li>sex屬性值:<pg:cell colName="sex"/></li> </ul>
</pg:map>
</td> </tr> </table>
補充說明,map标簽的定義檔案必須導入到jsp的頭部:
<%@ taglib uri="/WEB-INF/pager-taglib.tld" prefix="pg"%>
标簽庫的使用請參考以下文章:
http://yin-bp.iteye.com/blog/1136924 http://yin-bp.iteye.com/blog/1137674bboss mvc資料綁定更全面的介紹資料:
http://yin-bp.iteye.com/blog/1070614