![](/img/trans.png)
[英]Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date'
[英]Model.addAttribute : Failed to convert value of type 'java.util.Arrays$ArrayList' to required type 'java.lang.String'
我想在Spring模型中添加一个项目列表。 它有时会抛出ConversionFailedException
。 问题的方法:
private void addAuthoritiesToModel(Model model){
List<Authority> allAuthorities = Arrays.asList(
Authority.of("ROLE_ADMIN","Admin"),
Authority.of("ROLE_USER","User")
);
model.addAttribute("allAuthorities",allAuthorities);
}
该方法抛出最后一行。 奇怪的是,只有在从特定方法而不是其他方法调用时才会这样做。 例如,它在这里工作正常:
@GetMapping("/users/new")
public String newUserForm(Model model){
model.addAttribute("user",User.blank());
model.addAttribute("newUser",true);
addAuthoritiesToModel(model);
return "user_details";
}
但它吹在这里:
@PostMapping(value = {"/users","/profile","/users/{any}"})
public String postUser(@Valid @ModelAttribute("user") User user,
BindingResult bindingResult,
@RequestParam("newPassword") Optional<String> newPassword,
@RequestParam("confirmPassword") Optional<String> confirmPassword,
RedirectAttributes redirectAttributes,
@PathVariable("any") String pathVariable
){
if(bindingResult.hasErrors()) {
if(user.getId()==null)
redirectAttributes.addAttribute("newUser",true);
addAuthoritiesToModel(redirectAttributes);
return "user_details";
}
...
}
我已经尝试将Arrays.asList
交换到另一个List实现,但这并没有解决问题。 并且它无法解释为什么它在第一种情况下不起作用。
Model
和RedirectAttributes
之间存在差异。 RedirectAttributes
中的值被格式化为String。
控制器可用于为重定向方案选择属性的Model接口的特化。 由于添加重定向属性的意图非常明确 - 即用于重定向URL,属性值可以格式化为字符串并以这种方式存储,以使它们有资格附加到查询字符串或在org中扩展为URI变量.springframework.web.servlet.view.RedirectView。
除非重定向需要,否则不应使用,在这种情况下应该是字符串值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.