无法将类型 [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 类型