![](/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.