<form class="form-horizontal" role="form" id="form">
<div class="form-group">
<label for="olderName" class="col-sm-2 control-label">老人名称</label>
<div class="col-sm-4">
<input type="text" class="form-control"
name="olderName" id="olderName" placeholder="老人名称">
</div>
</div>
<div class="form-group">
<label for="olderNo" class="col-sm-2 control-label">老人编号</label>
<div class="col-sm-4">
<input type="text" class="form-control"
name="olderNo" id="olderNo" placeholder="老人编号">
</div>
</div>
<div class="form-group">
<div class="col-sm-6">
<button type="button" id="search" class="btn btn-primary pull-right">查询</button>
</div>
<div class="col-sm-6">
<button type="submit" class="btn btn btn-default">清空</button>
</div>
</div>
</form>
js:
$(function () {
$('#search').click(function () {
var
formdata=$("#form").serialize();
console.log(formdata);
formdata = decodeURIComponent(formdata,true);
console.log(formdata);
formdata = encodeURI(encodeURI(formdata));
console.log(formdata);
$('#datatable').bootstrapTable('refresh', {
url:"${ctx}/bse/older/find?rnd="+Math.random()+"&"+formdata
});
});
});
后台:
@RequestMapping(value="find",produces ="plain/text;
charset=UTF-8")
public String find(BseOlder bseOlder, HttpServletRequest request, HttpServletResponse response, Model model) throws UnsupportedEncodingException {
System.out.println("olderName:" + bseOlder.getOlderName() + "
olderNo:" + bseOlder.getOlderNo());
bseOlder.setOlderName(java.net.URLDecoder.decode(bseOlder.getOlderName(), "UTF-8"));
bseOlder.setOlderNo(java.net.URLDecoder.decode(bseOlder.getOlderNo(), "UTF-8"));
System.out.println("olderName:" + bseOlder.getOlderName() + "
olderNo:" + bseOlder.getOlderNo());
Page<BseOlder> page = bseOlderService.findPage(new Page<BseOlder>(request, response), bseOlder);
model.addAttribute("page", page);
return renderString(response,page.getList());
}
打印出的信息:
过程跟踪:
- 查询:“好人” 点击提交;
- 从form表单中序列化数据到formdata
olderName=%E5%A5%BD%E4%BA%BA&olderNo=
好人变成 %E5%A5%BD%E4%BA%BA
- 步骤1中已经进行了一次encode编码,解码decodeURIComponent一次 olderName=好人&olderNo= 好人变成 好人
- 再一次encode编码 olderName=%25E5%25A5%25BD%25E4%25BA%25BA&olderNo= 好人变成 %25E5%25A5%25BD%25E4%25BA%25BA
- 提交到后台
- 后台进行反向操作 接收到的数据 olderName=%25E5%25A5%25BD%25E4%25BA%25BA&olderNo= 封装在bseOlder bean中
- 信息 进行数据进行URLdecode操作,URldecode操作和encodeURL操作是相反的操作 olderName:%E5%A5%BD%E4%BA%BA olderNo: 好人变成 %E5%A5%BD%E4%BA%BA
- 再次对信息进行转码 bseOlder.setOlderName(java.net.URLDecoder.decode(bseOlder.getOlderName(), "UTF-8")); 好人变成 好人
- 到此就完成了前台到后台的信息转码解码之间传递。