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

时间:2016-12-06 14:29:54

标签: spring hibernate spring-mvc spring-security

我正在使用Spring MVC和Spring Security以及hibernate。我有“保存'电话号码”到“数据库”的问题。哪里有错误?

我提交表单时收到以下错误

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添加到我的hibernate配置

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

但错误信息仍在那里。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

你可以试试这个:

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