如何使用controller传boolean形式值
如何使用controller传boolean形式值
这篇文章主要讲解了“如何使用controller传boolean形式值”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用controller传boolean形式值”吧!
controller传boolean形式值
@GetMapping("/check-cart")publicList<CartViewDto>checkCart(@RequestParam(value="requirePrice",required=false)booleanrequirePrice){returnservice.checkCart(requirePrice);}
controller传入boolean类型的值,参数为非必填
我们可以传三种类型
http://端口:ip/cart/check-cart
http://端口:ip/cart/check-cart?requirePrice=true
http://端口:ip/cart/check-cart?requirePrice=false
这三种都可以。
其他如:
http://端口:ip/cart/check-cart?requirePrice=
http://端口:ip/cart/check-cart?requirePrice=111
都会报错
controller层接收各种参数和文件
在构建一个系统时,前端和后台总是需要对接,在springmvc架构里,这种对接一般发生在Controller层中。方法参数绑定首先支持Java所有基本类型(包括: byte、short、int、long、float、double、char、string、boolean),以及基本类型对应封装高级类(包括:StringBuilder、StringBuffer),也包含 了我们自己定义的各种JavaBean类型。接受的方式有很多,但是也要在接受数据时也要体现面向对象的思想。
简单传入
以用户登陆为例,在前台传入数据,做一个传入的例子。
前台传入数据的形式为 username=10&password=10
<html><head><scriptsrc="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script><script>//简单形式的传参$.ajax({type:"POST",url:"http://localhost:8080/test/requesetParamGet",contentType:"application/x-www-form-urlencoded",data:"username=10&password=10",dataType:"json",success:function(result){if(result.code==0){console.log(result)}else{}}});</script></head></html>
在这种情况下,如何在后台进行接受呢?可以采用如下的方法。
@ResponseBody@RequestMapping("/simple")publicRlist(Stringname,Stringage){System.out.println("name:"+name+",age:"+age);returnR.ok();}
当然也可以采用HttpServeletRequest的形式进行接受
@ResponseBody@RequestMapping("/simple")publicRrequestGet(HttpServletRequestrequest){System.out.println("reqname:"+request.getParameter("name")+",reqage:"+request.getParameter("age"));returnR.ok();}
以json对象的形式传入
还是以用户登陆为例,在前台传入数据,做一个传入的例子。
<scriptsrc="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script><script>//class获取,需要用对象的形式vars={name:'liMin',age:'10'}$.ajax({type:"POST",url:"http://localhost:8080/test/classGet",contentType:"application/json",data:JSON.stringify(s),dataType:"json",success:function(result){if(result.code==0){console.log(result)}else{}}});</script>
这种情况下,controller层建议使用对象的形式进行接受。
@ResponseBody@RequestMapping("/classGet")publicRclassGet(@RequestBodyTestEntitytestEntity){System.out.println("className:"+testEntity.getName()+"classAge:"+testEntity.getAge());returnR.ok();}
在传参时,需要添加注解@RequsetBody用来接收contentType为application/json的传入对象。如果传过来的时contentType头为application/x-www-form-urlencoded,那么建议使用另外一个注解接受@RequestParam来接受。
@RequestMapping("/requesetParamGet")publicRaddUser6(@RequestParam("username")Stringusername,@RequestParam("password")Stringpassword){System.out.println("usernameis:"+username);System.out.println("passwordis:"+password);returnR.ok();}
如果啥都不写,那么就得不到这个对象,接受到的对象为NULL。
当然,你可以不接受为一个对象,可以把传过来的json对象转化为json字符串,然后用各种工具进行解析,也是可以的。当然也是要加上@RequestBody或者@RequestParam的。
@ResponseBody@RequestMapping("/stringGet")publicRstringGet(@RequestBodyStringstring){System.out.println("String:"+string);returnR.ok();}
文件传输
在项目中,文件上传有别于对象的上传。
<html><head><scriptsrc="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script><script>functionsavePic(){varformData=newFormData($("#uploadPic")[0]);varajaxUrl="http://localhost:8080/test/fileUpload";//alert(ajaxUrl);//$('#uploadPic').serialize()无法序列化二进制文件,这里采用formData上传//需要浏览器支持:Chrome7+、Firefox4+、IE10+、Opera12+、Safari5+。$.ajax({type:"POST",//dataType:"text",url:ajaxUrl,data:formData,//async:false,//cache:false,contentType:false,//上传文件processData:false,//序列化处理,默认为true,上传文件需要改成falsesuccess:function(data){alert(data);},error:function(data){alert("error:"+data.responseText);}});returnfalse;}functionjiance(){varformData=newFormData();formData.append()}</script></head><body><formid="uploadPic"action=""enctype="multipart/form-data"><inputtype="file"name="multipartFile"id="file"><ahref="javascript:savePic();"class="btngreen">提交</a><ahref="javascript:jiance();"class="btngreen">jiance</a></form></body></html>
在后台接受参数的例子:
@RequestMapping("/fileUpload")@ResponseBodypublicRupload(MultipartFilemultipartFile){StringfilePath="";if(!multipartFile.isEmpty()){System.out.println(multipartFile.getOriginalFilename());}returnR.ok().put("filePath",filePath);}
@RequestMapping("/fileUpload2")@ResponseBodypublicRupload2(@RequestParam("multipartFile")MultipartFilemultipartFile){StringfilePath="";if(!multipartFile.isEmpty()){System.out.println(multipartFile.getOriginalFilename());}returnR.ok().put("filePath",filePath);}
@RequestMapping("/fileUpload3")@ResponseBodypublicRupload3(@RequestBodyMultipartFilemultipartFile){StringfilePath="";if(!multipartFile.isEmpty()){System.out.println(multipartFile.getOriginalFilename());}returnR.ok().put("filePath",filePath);}
这里需要注意一点,文件名必须和参数名保持一致,在本项目中file文件的名字必须为multipartFile。
感谢各位的阅读,以上就是“如何使用controller传boolean形式值”的内容了,经过本文的学习后,相信大家对如何使用controller传boolean形式值这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是恰卡编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
推荐阅读
-
php 一步步实现mvc架构——路由篇
-
「php」thinkphp5实战(一):界面引入
-
js如何转换Boolean型
js如何转换Boolean型这篇文章给大家分享的是有关js如何转换...
-
springboot怎么手动动态注入controller和service
springboot怎么手动动态注入controller和service...
-
controller中怎么设置接收参数的默认值
controller中怎么设置接收参数的默认值这篇文章主要介绍了c...
-
Springboot @Value注入boolean如何设置默认值
Springboot @Value注入boolean如何设置默认值...