问题:在做登录界面时,如果点击“记住密码”进入下一个页面并后退到登录界面,再点击“登录”并且不点击“记住密码”时,
服务器就会报400错误,原因是第二次登录时由于没对“记住密码”做任何操作,所以isAuto返回的值是null,而int型不能接收null值,就会报错。
“解决办法:把接收变量类型改成integer型,它可以接收null值。
建议:以后接收整型数据时没有特殊情况尽量都用integer。
后续:我在另一个工程中用的integer型接收isAuto的值,发现还是出错,就用了另一种解决办法,就是在页面加载的时候就判断记住密码框有没有被选中。
//jsp页面代码
<label><input type="checkbox" name="isAuto" id="isAuto" onclick="remember()">记住密码</label>
<script type="text/javascript">
function remember() {
var isAuto = document.getElementById("isAuto");
if (isAuto.checked == true) {
document.getElementById("isAuto").value = "1";
} else {
document.getElementById("isAuto").value = "0";
}
}
</script>
//出错时代码
public ModelAndView loginIdentify(Model model, HttpSession session,
@RequestParam(value = "isAuto", defaultValue = "0") int isAuto,
String username, String password, HttpServletRequest request,
HttpServletResponse response) throws Exception {...}
//正确时代码
public ModelAndView loginIdentify(Model model, HttpSession session,
@RequestParam(value = "isAuto", defaultValue = "0") Integer isAuto,
String username, String password, HttpServletRequest request,
HttpServletResponse response) throws Exception {...}