我正在使用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();
}
但错误信息仍在那里。
答案 0 :(得分:0)
您尝试在表单中发送的数字无效整数 - 它包含括号。在这种情况下,您应该将模型上的Phone_Number类型更改为String。
答案 1 :(得分:0)
如果要将电话号码作为int处理,请确保从视图收到的参数是整数。
你可以试试这个:
<form:input id="phone" path="Phone_Number" type="number" class="form-control span4"/>