关于前台页面传递数据到后台 数据类型的问题

之前百度了一下 大家都说前台传递到后台的数据类型是String 那我想问下 如果传递是"true"或者"false"这样的字符串 我使用boolean类型也可以接收 传递"123"到后台 我用int也可以接收 这里面貌似存在转换 这个到底是什么情况?想不明白,请大家指点一下,感谢.(表现层我用的是springmvc)

阅读 11.3k
2 个回答

这里面确实存在着转换 —— 并且这个工作是 SpringMVC 替你做的。比如你的前台传递 a=123&b=true 到后台,接收的方法是 ControllerdoPost 的方法:

如果你这样写,这么 "123" 和 "true" 都将作为字符串赋值给 a 和 b:

@PostMapping("someURL")
public String doPost(String a, String b) {
    ...
}

如果你写的是:

@PostMapping("someURL")
public String doPost(int a, boolean b) {
    ...
}

那么 SpringMVC 会尝试替你转换,比如将 "123" 转为整数 123,将 "true" 转为布尔值 true。为什么说是尝试呢?因为假设你传递的是 a=hello&b=world,那么 SpringMVC 尝试将 "hello" 转为 int 或者尝试将 "world" 转为 boolean 就会失败,那么 SpringMVC 的处理方式是让这次 POST 请求与上面的方法对应的 URL 不匹配,继续尝试寻找下一个能够匹配的方法。

js的数值类型属于弱类型,对于 123 或者 true ,在接口层对前端来说,没有太重要的意义。

前端只是负责把你们约定好的 数值 传给后端,而非数据类型

至于你希望接收到的 123int型,还是 long型,这属于后端的数据处理。

所以在前后端约定接口的时候,把 String 作为统一的 数据类型 是最好不过了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题