小编Ste*_*her的帖子

Model.addAttribute :无法将“java.util.Arrays$ArrayList”类型的值转换为所需类型“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);
}
Run Code Online (Sandbox Code Playgroud)

该方法在最后一行抛出。奇怪的是,它只在从特定方法而不是其他方法调用时才这样做。例如,它在这里工作正常:

@GetMapping("/users/new")
public String newUserForm(Model model){
    model.addAttribute("user",User.blank());
    model.addAttribute("newUser",true);
    addAuthoritiesToModel(model);

    return "user_details";
}
Run Code Online (Sandbox Code Playgroud)

但它在这里吹:

@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";
    }

...
}
Run Code Online (Sandbox Code Playgroud)

我曾尝试交换Arrays.asList到另一个 List 实现,但这并不能解决问题。它不会解释为什么它在第一种情况下不起作用。

java spring-boot

5
推荐指数
1
解决办法
410
查看次数

JavaFX Treeview返回所选项目

我想在TreeView中获取选择并返回相应的模型对象.所有关于此的答案都表明这是通过内部类或lambda表达式完成的.但是,当我这样做时,编译器提醒我变量必须(有效)最终.我明白,为什么会这样,但我不知道解决问题.

注意:我实际上不确定,为什么情况首先需要一个监听器,因为我甚至不想经常听,而是在调用方法时得到结果.

    private CampaignObject getLeadSelect(){
    CampaignObject co = null;

    campTree.getSelectionModel().selectedItemProperty().addListener(
        new ChangeListener<TreeItem <CampaignObject>>() {
            @Override
            public void changed(ObservableValue<? extends TreeItem<CampaignObject>> observableValue, 
                    TreeItem<CampaignObject> oldItem, TreeItem<CampaignObject> newItem) {
                    co = newItem.getValue());
        }
    });

    return co;
}
Run Code Online (Sandbox Code Playgroud)

treeview javafx selection

2
推荐指数
1
解决办法
4546
查看次数

标签 统计

java ×1

javafx ×1

selection ×1

spring-boot ×1

treeview ×1