天天看點

from表單送出---name值沒有傳遞到背景原因解析enctype:"multipart/form-data",method:"post"

在确定标簽裡有name值,而且沒有name重複的情況下,from送出背景确實沒有擷取到資料,解決方式如下:

方法一

enctype:"multipart/form-data",method:"post"

去掉後,即可取到值,轉載原因如下:

1.get方式 

get方式送出的話,表單項都儲存在http header中,格式是 

http://localhost:8080/hello.do?name1=value1&name2=value2這樣的字元串。server端通過request.getParameter是可以取到值的。 

2.post方式(enctype為預設的application/x-www-form-urlencoded) 

表單資料都儲存在http的正文部分,格式類似于下面這樣:用request.getParameter是可以取到資料的 

name1=value1&name2=value2 

3.post方式(enctype為multipart/form-data,多用于檔案上傳,對于隻想傳value的做法,顯然使用application/json或者text/plain會好很多。可以把資料放到form的header或者body中,在背景使用相應的方法得到具體值) 

表單資料都儲存在http的正文部分,各個表單項之間用boundary隔開。格式類似于下面這樣:用request.getParameter是取不到資料的,這時需要通過request.getInputStream來取資料,不過取到的是個InputStream,是以無法直接擷取指定的表單項(需要自己對取到的流進行解析,才能得到表單項以及上傳的檔案内容等資訊)。這種需求屬于比較共通的功能,是以有很多開源的元件可以直接利用。比如:apache的fileupload元件,smartupload等。通過這些開源的upload元件提供的API,就可以直接從request中取得指定的表單項了。 

方法二

在方法裡指定傳遞的參數名,即可取得需要的值,如下:

1     /**
 2      * 修改産品
 3      */
 4     @RequestMapping(value="/edit")
 5     public ModelAndView edit(
 6             HttpServletRequest request,
 7             @RequestParam(value="ID",required=false) String ID,
 8             @RequestParam(value="tp",required=false) MultipartFile file,
 9             @RequestParam(value="tpz",required=false) String tpz,
10             @RequestParam(value="CONTENT",required=false) String CONTENT,
11             @RequestParam(value="TITLES",required=false) String TITLES,
12             @RequestParam(value="REMARK",required=false) String REMARK
13             ) throws Exception{      

轉載于:https://www.cnblogs.com/Nico-luo/p/8393896.html