无法将类型 [java.lang.String] 的属性值转换为所需类型 [java.lang.Integer]

Posted

技术标签:

【中文标题】无法将类型 [java.lang.String] 的属性值转换为所需类型 [java.lang.Integer]【英文标题】:Failed to convert property value of type [java.lang.String] to required type [java.lang.Integer] 【发布时间】:2017-04-21 05:34:37 【问题描述】:

我正在使用 Spring MVC 和 Spring Security 以及休眠。我在将“电话号码”保存到“数据库”时遇到问题。哪里出错了?

提交表单时出现以下错误

Failed to convert property value of type [java.lang.String] to required type [java.lang.Integer] for property Phone_Number; nested exception is java.lang.NumberFormatException: For input string: "(020)828-5852"

这是我的看法:

    <div class="control-group ">
 <label class="control-label" for="phone" >Phone Number</label>
  <div class="controls">
  <form:input id="phone" path="Phone_Number" type="text"
   class="form-control span4"/>
   <div class="has-error">
   <form:errors path="Phone_Number" class="help-inline" />
   </div>
    </div>
    </div>

型号:

@NotNull
    @Column(name="PHONE_NUMBER", nullable=false)
    private Integer Phone_Number;

我的控制器:

@RequestMapping(value =  "/newuser" , method = RequestMethod.GET)
    public String newUser(ModelMap model) 
        UsersInfo usersInfo = new UsersInfo();
        model.addAttribute("usersInfo", usersInfo);
        model.addAttribute("edit", false);
        model.addAttribute("loggedinuser", getPrincipal());
        return "adduser";
    

    @RequestMapping(value =  "/newuser" , method = RequestMethod.POST)
    public String saveUser(@Valid UsersInfo usersInfo, BindingResult result, ModelMap model) 


        if (result.hasErrors()) 
            return "adduser";
        


        if (!userInfoService.isUserUserNameUnique(usersInfo.getIdUsers(), usersInfo.getUserName())) 
            FieldError UsernameError = new FieldError("usersInfo", "UserName", messageSource
                    .getMessage("non.unique.UserName", new String[]  usersInfo.getUserName() , Locale.getDefault()));
            result.addError(UsernameError);
            return "adduser";
        

我读到我要将此 Bean 添加到我的休眠配置中

@Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() 
        return new PropertySourcesPlaceholderConfigurer();
    

但错误信息仍然存在。

【问题讨论】:

【参考方案1】:

您尝试在表单中发送的数字不是有效的整数 - 它包含括号。在这种情况下,您应该将模型上的 Phone_Number 类型更改为 String。

【讨论】:

【参考方案2】:

如果要将电话号码作为 int 处理,请确保从视图接收到的参数是 Integer。

你可以试试这个:

<form:input id="phone" path="Phone_Number" type="number" class="form-control span4"/>

【讨论】:

以上是关于无法将类型 [java.lang.String] 的属性值转换为所需类型 [java.lang.Integer]的主要内容,如果未能解决你的问题,请参考以下文章

如何修复错误:无法将类型“java.lang.String”的值转换为所需类型“java.lang.Long”;

无法将 java.lang.String 类型的对象转换为 com.example 类型

无法从类型 [java.lang.String] 转换为类型 [java.lang.Long]

无法将类型“java.lang.String”的属性值转换为属性“事务”所需的类型“java.util.List”

无法将类型“java.lang.String”的属性值转换为所需类型“java.util.Date”

无法将 java.lang.String 类型的属性值转换为所需的 java.time.LocalDateTime 类型