jsp頁面 ajax提交數組 到struts2的action


最近工作用到提交表格中的數據到action(沒有表單)。經過幾番嘗試之后確定可以用下面方法將jsp頁面的js數組提交到action

function submits(){
        var mainTable=document.getElementById("mainTable");
        var trs= mainTable.rows;
        var tr=null;
        var data=new Array();
        var flag=false;
        for(var i=1;i<trs.length;i+=2){
            tr=trs[i].cells;
            var d=new Array();
            for(var j=0;j<tr.length;j+=2){
                if(tr[j].style.backgroundColor=="rgb(255, 255, 119)"){
                    if(!flag){
                        //行坐標(人員)
                        d.push(((i-1)/2));
                        //列坐標(房間)
                        d.push((j/2));
                        //數值(N/Y)
                        d.push(tr[j].innerHTML);
                        flag=true;
                    }else{
                        //列坐標(房間)
                        d.push((j/2));
                        //數值(N/Y)
                        d.push(tr[j].innerHTML);
                    }
                }
            }
            if(d.length>0){
                data.push(d);
            }
            flag=false;
        }
      //序列化數據 var params
=$.param({'datas':data},true); $.ajax({ type:"POST", url:"accessControl_updateAccessControl.htm", data:params, dataType:'json', success:function(msg){ alert(msg); } }); }
$.param({'datas':data},true);這個方法很重要   提交前需要序列化
然后接下來就按照Struts2的特性 在action中寫好屬性 寫好getter setter方法

    private List<Object[]> datas;
    
    public List<Object[]> getDatas() {
        return datas;
    }
    public void setDatas(List<Object[]> datas) {
        this.datas = datas;
    }

之后就可以直接在ajax提交的url的方法中直接得到數據很方便

//修改門禁信息表
    public String updateAccessControl() {
//        System.out.println("過來了");
        List<EmployeeInfo> list=accessControlService.findAllDoorCheckDto();
        List<Room> roomList=accessControlService.findAllRoom();//當前數據庫所有房間信息
        int pIndex=0;
        EmployeeInfo emp=null;
        int rIndex=0;
        String rStatus=null;
        Room room=null;
        for(Object[] data:datas){//遍歷提交上來的每行數據
            System.out.println(Arrays.toString(data));
            if(data.length>0){
                pIndex=(Integer) data[0];
                emp=list.get(pIndex);
                for(int i=1;i<data.length;i+=2){
                    rIndex=(Integer) data[i];
                    room=roomList.get(rIndex);
                    rStatus=(String) data[i+1];
                }
            }
            
        }
        
        return NONE;
    }

 


免責聲明!

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



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