datatable傳參和后台處理


1.html

<div>
<div class="form-inline">
<div class="form-group marginone">
<label >名稱 :</label>
<input class="form-control" placeholder="名稱" type="text" name="name" id="nameSearch">
</div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div class="form-group marginone pull-right" >
<button class="btn btn-default" id="serchbtn">
<i class="fa fa-search">&nbsp;&nbsp;查&nbsp;&nbsp;詢&nbsp;&nbsp;</i>
</button>&nbsp;&nbsp;&nbsp;
</div>
</div>
<br>
<div class="">
<table id="search" class="table table-striped table-bordered dataTable no-footer" width="100%" role="grid" style="width: 100%;">
<thead>
<th>名稱</th>
<th>名稱證號</th>
</thead>
<tbody>
<tr>
</tr>
</tbody>
<tfoot>
<tr>
<td></td>
</tr>
</tfoot>
</table>
</div>
</div>
2.javaScript
script>
$(function () {
var oTable145=$("#search145").DataTable({
"ajax":{
"url":"search/search145",
"type":"POST"
},
"autoWidth":true,//自動計算列寬
"scrollX": true,
"paging": true,//分頁,默認true
"bSort": false,//能否對列進行排序操作
"lengthChange": false,//每頁顯示數據條數能否修改,默認true
"pageLength": 15,//每頁顯示數據個數
"searching": false,//本地搜索默認true
"serverSide": true,
"columns":[
{"data":"name"},
{"data":"nameCode"}
],
language: {//代替表下方的英文頁碼說明
"sProcessing": "處理中...",
"sLengthMenu": "每頁 _MENU_ 項",
"sZeroRecords": "沒有匹配結果",
"sInfo": "當前顯示第 _START_ 至 _END_ 項,共 _TOTAL_ 項。",
"sInfoEmpty": "當前顯示第 0 至 0 項,共 0 項",
"sInfoFiltered": "(由 _MAX_ 項結果過濾)",
"sInfoPostFix": "",
"sSearch": "搜索:",
"sUrl": "",
"sEmptyTable": "表中數據為空",
"sLoadingRecords": "載入中...",
"sInfoThousands": ",",
"oPaginate": {
"sFirst": "首頁",
"sPrevious": "上頁",
"sNext": "下頁",
"sLast": "末頁",
"sJump": "跳轉"
}
}
});
function search(){
var name=$("#nameSearch").val();
var param={
"name":name//(參數名,參數值)在參數處理中,參數名和Controller中一樣就可以了,做對象處理參數,參數名必須為實體類的屬性名
};
oTable.settings()[0].ajax.data=param;
oTable.ajax.reload();
}

$("#serchbtn").click(
function () {
search();
}
);
});
</script>
后台有兩種接收方式:
一,,直接接收傳遞過來的參數
Controller控制器階段
@RequestMapping(value = "queryTest",method = RequestMethod.POST)
public Map<String,Object> query(@RequestParam(required=false)String name){
Map<String,Object> param=new HashMap<String, Object>();
List<User> list= SearchService.search(name);
int i=list.size();
System.out.println(i);
param.put("draw",1);
param.put("data",list);
param.put("recordsTotal",i);
param.put("recordsFiltered",i);
return param;
}
service階段
public static  List<User> queryByHql(String name) {

List<User> list=new ArrayList<User>();
String hql="from User where 1=1 [WHERE]";
String where="";
    if(!(StringUtil.isEmpty(name)){
where+=" and name = :name1";
param.put("name1",name);
}
if(where.length()>0){
hql=hql.replace("[WHERE]",where);
}else{
hql=hql.replace("[WHERE]",where);
}
   Session session = null;
try
{
session = getSession();
Query query = session.createQuery(hql);

Iterator iterator = param.keySet().iterator();
while(iterator.hasNext()) {
String key = iterator.next().toString();
Object value = param.get(key);
//String[]
if(value != null && "[Ljava.lang.String;".equals(value.getClass().getName())) {
query.setParameterList(key, (String[])value);
}
else {
query.setParameter(key, value);
}
}
list=query.list();
}
catch (Exception ex) {
logger.error(ex.toString());
logger.error("hql: {}", hql);
ex.printStackTrace();
}
finally {
closeSession(session);
}
return list;
}
這是參數處理的第一種方式,將參數直接傳遞到后台后台也直接處理參數,但是缺點是當參數過多時傳遞的參數多造成代碼的雍余,這時引入第二種接受參數的方式,以一個對象接收參數
第二種處理參數的方式
Controller控制器階段
@RequestMapping(value = "queryTest",method = RequestMethod.POST)
public Map<String,Object> query(User user){
Map<String,Object> param=new HashMap<String, Object>();
List<User> list= SearchService.search(user);
int i=list.size();
System.out.println(i);
param.put("draw",1);
param.put("data",list);
param.put("recordsTotal",i);
param.put("recordsFiltered",i);
return param;
}
service階段
public static  List<User> queryByHql(User user) {

List<User> list=new ArrayList<User>();
String hql="from User where 1=1 [WHERE]";
String where="";
    if(!(StringUtil.isEmpty(user.getName())){
where+=" and name = :name";
param.put("name",user.getName);
}
if(where.length()>0){
hql=hql.replace("[WHERE]",where);
}else{
hql=hql.replace("[WHERE]",where);
}
   Session session = null;
try
{
session = getSession();
Query query = session.createQuery(hql);

Iterator iterator = param.keySet().iterator();
while(iterator.hasNext()) {
String key = iterator.next().toString();
Object value = param.get(key);
//String[]
if(value != null && "[Ljava.lang.String;".equals(value.getClass().getName())) {
query.setParameterList(key, (String[])value);
}
else {
query.setParameter(key, value);
}
}
list=query.list();
}
catch (Exception ex) {
logger.error(ex.toString());
logger.error("hql: {}", hql);
ex.printStackTrace();
}
finally {
closeSession(session);
}
return list;
}



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM