在處理表單類數據的時候,之前處理過一個表單裏面有20條類似的數據,針對這些數據都是通過一個一個的變量進行輸入的,一條數據有5個值,20條數據100個值,在controller中的參數中設置100個參數,哦,my god,好讓人崩潰,但是確實就這麼幹了一回,下面是寫的參數:
@RequestMapping("/baojia/savebjxx")
@ResponseBody
public Map<String,Object> savebjxx(@RequestParam("sffg") String sffg,@RequestParam("syxqbrq") String syxqbrq,@RequestParam("jqxqbrq") String jqxqbrq,@RequestParam("jqxbf") String jqxbf,@RequestParam("ccs") String ccs,@RequestParam("jqxqnzbrq") String jqxqnzbrq,@RequestParam("jqxdqts") String jqxdqts,
@RequestParam("clssxischoice") String clssxischoice,@RequestParam("clssxbe") double clssxbe,@RequestParam("clssxbf") double clssxbf,@RequestParam("clssxisvalid") String clssxisvalid,@RequestParam("clssxisvote") String clssxisvote,
@RequestParam("qcdqischoice") String qcdqischoice,@RequestParam("qcdqxbe") double qcdqxbe,@RequestParam("qcdqxbf") double qcdqxbf,@RequestParam("qcdqxisvalid") String qcdqxisvalid,@RequestParam("qcdqxisvote") String qcdqxisvote,
@RequestParam("sydszzrischoice") String sydszzrischoice,@RequestParam("sydszzrxbe") double sydszzrxbe,@RequestParam("sydszzrxbf") double sydszzrxbf,@RequestParam("sydszzrxisvalid") String sydszzrxisvalid,@RequestParam("sydszzrxisvote") String sydszzrxisvote,
@RequestParam("sjzwzrxischoice") String sjzwzrxischoice,@RequestParam("sjzwzrxbe") double sjzwzrxbe,@RequestParam("sjzwzrxbf") double sjzwzrxbf,@RequestParam("sjzwzrxisvalid") String sjzwzrxisvalid,@RequestParam("sjzwzrxisvote") String sjzwzrxisvote,
@RequestParam("ckzwzrxischoice") String ckzwzrxischoice,@RequestParam("ckzwzrxbe") double ckzwzrxbe,@RequestParam("ckzwzrxbf") double ckzwzrxbf,@RequestParam("ckzwzrxisvalid") String ckzwzrxisvalid,@RequestParam("ckzwzrxisvote") String ckzwzrxisvote,
@RequestParam("cshhsxischoice") String cshhsxischoice,@RequestParam("cshhsxbe") double cshhsxbe,@RequestParam("cshhsxbf") double cshhsxbf,@RequestParam("cshhsxisvalid") String cshhsxisvalid,@RequestParam("cshhsxisvote") String cshhsxisvote,
@RequestParam("blddpsxischoice") String blddpsxischoice,@RequestParam("blddpsxbe") double blddpsxbe,@RequestParam("blddpsxbf") double blddpsxbf,@RequestParam("blddpsxisvalid") String blddpsxisvalid,@RequestParam("blddpsxisvote") String blddpsxisvote,
@RequestParam("ssxischoice") String ssxischoice,@RequestParam("ssxbe") double ssxbe,@RequestParam("ssxbf") double ssxbf,@RequestParam("ssxisvalid") String ssxisvalid,@RequestParam("ssxisvote") String ssxisvote,
@RequestParam("zrssxischoice") String zrssxischoice,@RequestParam("zrssxbe") double zrssxbe,@RequestParam("zrssxbf") double zrssxbf,@RequestParam("zrssxisvalid") String zrssxisvalid,@RequestParam("zrssxisvote") String zrssxisvote,
@RequestParam("dcjcdddsssischoice") String dcjcdddsssischoice,@RequestParam("dcjcdddsssbe") double dcjcdddsssbe,@RequestParam("dcjcdddsssbf") double dcjcdddsssbf,@RequestParam("dcjcdddsssisvalid") String dcjcdddsssisvalid,@RequestParam("dcjcdddsssisvote") String dcjcdddsssisvote,
@RequestParam("dsftyxischoice") String dsftyxischoice,@RequestParam("dsftyxbe") double dsftyxbe,@RequestParam("dsftyxbf") double dsftyxbf,@RequestParam("dsftyxisvalid") String dsftyxisvalid,@RequestParam("dsftyxisvote") String dsftyxisvote,
@RequestParam("bjmpcsxischoice") String bjmpcsxischoice,@RequestParam("bjmpcsxbe") double bjmpcsxbe,@RequestParam("bjmpcsxbf") double bjmpcsxbf,@RequestParam("bjmpcsxisvalid") String bjmpcsxisvalid,@RequestParam("bjmpcsxisvote") String bjmpcsxisvote,
@RequestParam("bjmpszxischoice") String bjmpszxischoice,@RequestParam("bjmpszxbe") double bjmpszxbe,@RequestParam("bjmpszxbf") double bjmpszxbf,@RequestParam("bjmpszxisvalid") String bjmpszxisvalid,@RequestParam("bjmpszxisvote") String bjmpszxisvote,
@RequestParam("bjmpjdcdqxischoice") String bjmpjdcdqxischoice,@RequestParam("bjmpjdcdqxbe") double bjmpjdcdqxbe,@RequestParam("bjmpjdcdqxbf") double bjmpjdcdqxbf,@RequestParam("bjmpjdcdqxisvalid") String bjmpjdcdqxisvalid,@RequestParam("bjmpjdcdqxisvote") String bjmpjdcdqxisvote,
@RequestParam("bjmpsjxischoice") String bjmpsjxischoice,@RequestParam("bjmpsjxbe") double bjmpsjxbe,@RequestParam("bjmpsjxbf") double bjmpsjxbf,@RequestParam("bjmpsjxisvalid") String bjmpsjxisvalid,@RequestParam("bjmpsjxisvote") String bjmpsjxisvote,
@RequestParam("bjmpckxischoice") String bjmpckxischoice,@RequestParam("bjmpckxbe") double bjmpckxbe,@RequestParam("bjmpckxbf") double bjmpckxbf,@RequestParam("bjmpckxisvalid") String bjmpckxisvalid,@RequestParam("bjmpckxisvote") String bjmpckxisvote,
@RequestParam("bjmpcshhssxischoice") String bjmpcshhssxischoice,@RequestParam("bjmpcshhssxbe") double bjmpcshhssxbe,@RequestParam("bjmpcshhssxbf") double bjmpcshhssxbf,@RequestParam("bjmpcshhssxisvalid") String bjmpcshhssxisvalid,@RequestParam("bjmpcshhssxisvote") String bjmpcshhssxisvote,
@RequestParam("bjmpzrssxischoice") String bjmpzrssxischoice,@RequestParam("bjmpzrssxbe") double bjmpzrssxbe,@RequestParam("bjmpzrssxbf") double bjmpzrssxbf,@RequestParam("bjmpzrssxisvalid") String bjmpzrssxisvalid,@RequestParam("bjmpzrssxisvote") String bjmpzrssxisvote,
@RequestParam("bjmpssxischoice") String bjmpssxischoice,@RequestParam("bjmpssxbe") double bjmpssxbe,@RequestParam("bjmpssxbf") double bjmpssxbf,@RequestParam("bjmpssxisvalid") String bjmpssxisvalid,@RequestParam("bjmpssxisvote") String bjmpssxisvote,
@RequestParam("bjmpdcjcdddshxischoice") String bjmpdcjcdddshxischoice,@RequestParam("bjmpdcjcdddshxbe") double bjmpdcjcdddshxbe,@RequestParam("bjmpdcjcdddshxbf") double bjmpdcjcdddshxbf,@RequestParam("bjmpdcjcdddshxisvalid") String bjmpdcjcdddshxisvalid,@RequestParam("bjmpdcjcdddshxisvote") String bjmpdcjcdddshxisvote){
說實話,不想用類似的方式再寫一個類似的功能了,之後查了下,發現在spring裏面有更好的處理方式,就是通過提交表單的方法,所以這裏仔細的研究一下如果通過表單提交該如何處理類似的問題;
表單處理主要分爲兩部分,一部分是表單的展示,一部分是處理表單的輸入;
1.處理表單的輸入
1.1.註解形式的參數接收
1.1.1. HttpServletRequest可以直接定義在參數的列表,通過該請求可以傳遞參數
@Override
public int setAllIni(HttpServletRequest request) {
int ret = 1;
Map<String, Object> map = new HashMap<String,Object>();
//續保相關
map.put("iniName", "xuBaoZaiBeiPingAn");
map.put("iniValue", request.getParameter("xuBao"));
ret = zaiBeiDao.updateIniZaiBei(map);
if(ret != 1){
return 0;
}
map.put("iniName", "xuBaoZaiBeiPingAnDelayTime");
map.put("iniValue", request.getParameter("xuBaoDelayTime"));
ret = zaiBeiDao.updateIniZaiBei(map);
if(ret != 1){
return 0;
}
可以從HttpServletRequest 取出“xuBao”屬性,然後進行操作!
1.1.2. 在參數列表上直接定義要接收的參數名稱,只要參數名稱能匹配的上就能接收所傳過來的數據, 可以自動轉換成參數列表裏面的類型,注意的是值與類型之間是可以轉換的
1.1.2.1,傳遞多種不同類型的參數:
url:http://baoxian.qa.ms.netease.com/vehicle/input?city_code=23223&license_no=12345&license_owner=kang&frame_no=9090&engine_no=8080&vehicle_name=4343&enroll_date=2015-08-07&seat_count=6
@RequestMapping(value="/vehicle/input",method=RequestMethod.POST)
@ResponseBody
public String vehicleInput(@RequestParam("city_code") String citycode,@RequestParam("license_no") String licenseNo,
@RequestParam(value="license_owner",required=false) String licenseOwner, @RequestParam(value="frame_no",required=false) String frameNo,
@RequestParam(value="engine_no",required=false) String engineNo,@RequestParam(value="vehicle_name",required=false) String vehivleName,
@RequestParam(value="enroll_date",required=false) String enrollDate,@RequestParam(value="seat_count",required=false) String seatCount){
LogConstant.runLog.info("輸入的參數:citycode:" + citycode + " license_no:"
+ licenseNo + " license_owner:" + licenseOwner + " frame_no:"
+ frameNo + " engine_no:" + engineNo + " vehicle_name:"
+ vehivleName + " enroll_date:" + enrollDate + " seat_count:"
+ seatCount);
if(StringUtils.isEmpty(citycode) || StringUtils.isEmpty(licenseNo) || StringUtils.isEmpty(licenseOwner)){
return "無效的參數設置!";
}
String result = carTypeMockService.vehicleInput(citycode,licenseNo,licenseOwner,frameNo,engineNo,vehivleName,enrollDate,seatCount);
return result;
}
1.1.2.2.傳遞數組
url:http://localhost/mvc/test/toPerson2.do?name=tom&name=jack
/**
* 對數組的接收,定義爲同名即可
*/
@RequestMapping("/toPerson2.do")
public String toPerson2(String[] name) {
for (String result : name) {
System.out.println(result);
}
return "jsp1/index";
}
1.1.2.3.傳遞自定義對象(可多個)
url:http://localhost/mvc/test/toPerson3.do?name=zhangsan&age=14&address=china&birthday=2000-2-11
User 定義的屬性有:name,age,並且有各自屬性的對應的set方法以及toString方法
Person定義的屬性有:name,age.address,birthday,並且有各自屬性的對應的set方法以及toString方法
/**
*
* 傳遞的參數的名字必須要與實體類的屬性set方法後面的字符串匹配的上才能接收到參數,首字符的大小寫不區分
* 請求中傳的參數只要是能和參數列表裏面的變量名或者實體裏面的set後面的字符串匹配的上就能接收到
*
*/
@RequestMapping("/toPerson3.do")
public String toPerson3(Person person, User user) {
System.out.println(person);
System.out.println(user);
return "jsp1/index";
}
1.2.ajax請求
function setAllIni(){
var data = {};
data.xuBao = $("#setXuBao").val();
data.xuBaoDelayTime = $("#xuBaoDelayTime").val();
......
$.ajax({
url: '/zaiBeiPingAn/setAllIni.html',
type: 'POST',
data: data,
dataType: 'json',
async: false,
success: function(json){
if(json.retCode=="200"){
bootbox.alert({
message: '批量設置成功',
buttons: {
ok: {
label: '確定',
className: 'btn-myStyle',
}
},
callback: function() {
window.location.reload();
}
});
}else{
bootbox.alert("批量設置失敗");
}
}
});
裏面只是顯示了表單裏面的一條數據,其他數據格式類似;1.3.表單提交
表單ftl頁面:
<#include "../../inc/core.ftl">
<@htmHead title="保險Mock平臺"
otherJs=["/js/insurance/pingan/zaiBei.js", "/js/common/bootbox.js", "/js/date/WdatePicker.js"]
/>
<@htmlNavHead />
<div id="page-wrapper">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">災備測試</h1>
</div>
</div>
<br><br>
<div class="row">
<div class="col-lg-12">
<div class="col-lg-3">
<div class="form-group input-group">
<span class="input-group-addon">續保校驗</span>
<select id="setXuBao" class="form-control" οnchange="changeDelayTime('xb','setXuBao','xuBaoDelayTime')">
<option value="success">成功</option>
<option value="delay">延時</option>
<option value="failure">失敗</option>
<option value="session">session失效</option>
</select>
</div>
</div>
<div class="col-lg-3" id="xb-delay" style="display: none;">
<div class="form-group input-group">
<span class="input-group-addon">延時時長</span>
<input id="xuBaoDelayTime" class="form-control">
</div>
</div>
<button class="btn btn-primary" type="button" onClick="setZaiBei('xuBao')">設置</button>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="col-lg-3">
<div class="form-group input-group">
<span class="input-group-addon">生日校驗</span>
<select id="setShengRi" class="form-control" οnchange="changeDelayTime('sr','setShengRi','shengRiDelayTime')">
<option value="success">成功</option>
<option value="delay">延時</option>
<option value="failure">失敗</option>
<option value="session">session失效</option>
</select>
</div>
</div>
<div class="col-lg-3" id="sr-delay" style="display: none;">
<div class="form-group input-group">
<span class="input-group-addon">延時時長</span>
<input id="shengRiDelayTime" class="form-control">
</div>
</div>
<button class="btn btn-primary" type="button" onClick="setZaiBei('shengRi')">設置</button>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<button class="btn btn-primary" type="button" onClick="setAllIni()">批量設置</button>
<button class="btn btn-primary" type="button" onClick="setBackUp()">還原設置</button>
</div>
</div>
</div>
對象java方法:
@RequestMapping("/zaiBeiPingAn/setAllIni")
@ResponseBody
public Map<String, Object> setAllIni(HttpServletRequest request, Model model){
Map<String, Object> retMap = new HashMap<String, Object>();
int ret = zaiBeiService.setAllIni(request);
if(ret == 1){
retMap.put("retCode", 200);
retMap.put("retDesc", "批量設置成功");
}else{
retMap.put("retCode", -1);
retMap.put("retDesc", "批量設置失敗");
}
return retMap;
}
@Override
public int setAllIni(HttpServletRequest request) {
int ret = 1;
Map<String, Object> map = new HashMap<String,Object>();
//續保相關
map.put("iniName", "xuBaoZaiBeiPingAn");
map.put("iniValue", request.getParameter("xuBao"));
ret = zaiBeiDao.updateIniZaiBei(map);
if(ret != 1){
return 0;
}
map.put("iniName", "xuBaoZaiBeiPingAnDelayTime");
map.put("iniValue", request.getParameter("xuBaoDelayTime"));
ret = zaiBeiDao.updateIniZaiBei(map);
if(ret != 1){
return 0;
}
//生日相關
map.put("iniName", "shengRiZaiBeiPingAn");
map.put("iniValue", request.getParameter("shengRi"));
ret = zaiBeiDao.updateIniZaiBei(map);
if(ret != 1){
return 0;
}
map.put("iniName", "shengRiZaiBeiPingAnDelayTime");
map.put("iniValue", request.getParameter("shengRiDelayTime"));
ret = zaiBeiDao.updateIniZaiBei(map);
if(ret != 1){
return 0;
}
return ret;
}
這裏描述了兩條記錄的情況,我們來看下運行情況:
參考文章:
1.http://alog2012.iteye.com/blog/2040214