1. 程式人生 > >SSM前端表單向後臺傳送陣列,後臺的接收資料的方式

SSM前端表單向後臺傳送陣列,後臺的接收資料的方式

在springMVC中,controller中方法的引數是自動注入的,在使用註解的方式下,通常有:

                  @RequestParam:  ·取querystring當中的引數
                  @PathVariable:     取 在@RequestMapping中定義的佔位符中的引數(/test/{id})
                  @RequestBody:   取request 這個訊息體 (可以組裝json物件)

在不使用註解的情況下,預設有一些物件可以自動注入如:

                  HttpServletRequest
                  HttpServletResponse
                  MultipartFile
                  MultipartRequest

除此之外不使用註解的情況下,也可以接受前臺傳入的querystring中的引數

1、JSON化引數:

前臺js傳送請求:

$.ajax({   
         type:"POST",   
         url:"/item/getRequestArrayData",   
         dataType:"json",        
         contentType:"application/json",                 
         data:JSON.stringify(itemArray),   
         success:function(data){   
                   console.log(data);                         
               }   
           });  

JAVA後臺接收:

   @RequestMapping(value="/getRequestArrayData")  
    @ResponseBody  
    public Map<String,Object> getRequestArrayData(@RequestBody List<Item> itemList){  
        for(Item item:itemList){  
            //列印接收到的資料  
            System.out.println(item.getId()+"----"+item.getItem_name());  
        }  
        return null;  
    }  

2、使用HttpServletRequest 接收引數陣列

js傳送請求:

                var imageUrlArr = [];
		$.each($("input[name=imageUrlFlag]"),function(index,obj){
			imageUrlArr.push($(obj).attr('id'));
		});
		data.field.imageUrl = imageUrlArr;
		$.post(URL,data.field, function(result) {
			if(result.status ==0){
				Msg.ok(result.msg);
				//關閉頁面
				if(flagAdd=='add'){
					tabUtil.tabDelete('posterThemeTableTab',-1);
				}else{
					tabUtil.tabDelete('posterThemeTableTab',data.field.themeId);
				}
				//頁面切換
				tabUtil.tabChange('posterThemeTableTab',0);
				//重新整理頁面
				table.reload('posterThemeTab', {
					  url: baseUrl+'/postertheme/listPosterThemeByPage',
					  page: {
						    curr: 1 //重新從第 1 頁開始
					  }
				});
			}else{
				Msg.fail(result.msg);
			}

後臺接收:

@RequestMapping(value="addPosterTheme",method=RequestMethod.POST)
	@ResponseBody
	public ResponseVo addPosterTheme(ScreenPosterThemeDto screenPosterThemeDto,HttpServletRequest request) {
		ResponseVo vo = new ResponseVo();
		String [] imageUrls  =request.getParameterValues("imageUrl[]");
		//檢視新增的主題是否存在
		//新增
		try {
			ScreenPosterThemeDto addPosterTheme = posterThemeService.addPosterTheme(screenPosterThemeDto);
			List<ScreenPosterDto> list = new ArrayList<>();
			for (String  imageUrl: imageUrls) {
				ScreenPosterDto screenPosterDto = new ScreenPosterDto();
				screenPosterDto.setThemeId(addPosterTheme.getThemeId());
				screenPosterDto.setImageUrl(PropertiesConstant.FDFS_DOMAIN+"/"+imageUrl);
				list.add(screenPosterDto);
			}
			Integer res = posterService.addPosters(list);
			if(res>0){
				vo.setStatus(ResponseEnum.SUCCESS.getStatus());
				vo.setMsg("新增成功");
			}
		} catch (Exception e) {
			e.printStackTrace();
			vo.setStatus(ResponseEnum.FAIL.getStatus());
			vo.setMsg("新增失敗");
		}
		return vo;
	}