Failed to convert property value of type java.lang.String to required type java.lang.Integer for property mobile; nested exception is java.lang.NumberFormatException: For input string: "13333332233"

前一阵捣鼓一个开源项目发现这个问题是前台传值时,后台是下图这样:

public AjaxJson create(@Valid @ModelAttribute("data") User user, BindingResult result,
                           HttpServletRequest request, HttpServletResponse response) {
        return doSave(user, request, response, result);
    }

这里的user中有个手机号DTO为Integer类型,前台转换mobile只要超过10个字符就会报上面的异常。

这个问题根本原因还是设计问题,Integer最大值为2147483647,spring遇到前端这样的超大范围会默认转成String类型,所以会报这个异常。

建议手机号这种号码类还是用字符串这种类型设计为好。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐