我写了一个控制器正在关注
@RequestMapping(value = "/update/{roleId}", method = {RequestMethod.POST, RequestMethod.PUT})
public String updateRole(@PathVariable Integer roleId,@Valid UserRoleResource roleDTO,
ModelMap modelMap) {
UserRole userRoleforduplicate = userRoleService.findByRoleName(roleDTO.getRoleName());
if(userRoleforduplicate==null)
{
UserRole userRole =
mapper.updateUserRoleFrom(roleDTO,userRoleService.findById(roleId));
userRoleService.update(userRole);
modelMap.addAttribute("user_role", userRole);
modelMap.addAttribute("roleId", userRole.getRoleId());
this.succes="redirect:/roles/listroles";
}
else
{
Object s="Role Name Already Exist";
modelMap.addAttribute("aslam", s);
this.succes="redirect:/roles/updateLoadDetails/roleId";
}
return succes;
}
其中else部分无法正常工作,因为变量succes是一个字符串且roleId是一个Integer,所以它抛出以下错误
Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested
exception is java.lang.NumberFormatException: For input string: "roleId"
对于这个问题,我可以将roleId附加到StringBuilder吗?比如
String s1="redirect:/roles/updateLoadDetails/";
Integer i2=roleId;
stringbuilder.append(s1);
stringbuilder.append(i2);
return stringbuilder;
或者将整数值传递给字符串的任何其他选项? PLZ任何人的帮助
答案 0 :(得分:1)
而不是代码
String s1="redirect:/roles/updateLoadDetails/";
Integer i2=roleId;
stringbuilder.append(s1);
stringbuilder.append(i2);
您也可以使用此代码,以减少代码行数
stringbuilder.append("redirect:/roles/updateLoadDetails/").appnd(""+roleId);
答案 1 :(得分:0)
您可以像这样使用String.format
:
String s = String.format("redirect:/roles/updateLoadDetails/%d", roleId);
答案 2 :(得分:-1)
替换
stringbuilder.append(i2);
使用
stringbuilder.append(""+i2);