婷婷同學_
2018-12-20 18:15:30
之前百度了一下 大家都說前臺傳遞到后臺的數據類型是String 那我想問下 如果傳遞是"true"或者"false"這樣的字符串 我使用boolean類型也可以接收 傳遞"123"到后臺 我用int也可以接收 這里面貌似存在轉換 這個到底是什么情況?想不明白,請大家指點一下,感謝.(表現層我用的是springmvc)
1 回答

一只甜甜圈
TA貢獻1836條經驗 獲得超5個贊
這里面確實存在著轉換 —— 并且這個工作是 SpringMVC 替你做的。比如你的前臺傳遞 a=123&b=true 到后臺,接收的方法是 Controller 中 doPost 的方法:
如果你這樣寫,這么 "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 不匹配,繼續嘗試尋找下一個能夠匹配的方法。
添加回答
舉報
0/150
提交
取消