gpt4 book ai didi

java - ModelAttribute 注释的多个方法。如何设置方法的调用顺序

转载 作者:行者123 更新时间:2023-12-04 04:41:39 26 4
gpt4 key购买 nike

我有这样的@Controller:

  @Controller
public class CandidateMenuController{
@ModelAttribute(value = "vacancies")
public Set<Vacancy> loadVacancies() {
return vacancyService.getAll();
}


@ModelAttribute(value = "vacanciesForCandidate")
public Set<Vacancy> vacanciesForCandidate(@RequestParam(required = false) List<Integer> vacanciesSelected,
@ModelAttribute("vacancies")Set<Vacancy> allVacancies ) {
.....
}
}

有时效果很好,但有时我看到异常:
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.util.Set]: Specified class is an interface

显然,这取决于 @ModelAttrributes 方法调用的顺序。

我知道我可以手动调用 @ModelAttribute 方法中的必要方法,但是
如何管理@ModelAttribute 方法调用?

最佳答案

你不能,基本上是 @ModelAttribute方法上的注释不能与 @ModelAttribute 结合使用论据上的注释。我也强烈反对它。它使您的 Controller 对更改非常脆弱并且容易出错(恕我直言)。

为什么不简单地写一个返回void的方法,包括Model作为一个论点并完成?

@ModelAttribute
public void referenceData(@RequestParam(required=false) List<Integer> vacanciesSelected, Model model) {
Set<Vacancy> vacancies= vacancyService.getAll();
model.addAttribute("vacancies", vacancies);
if (vacanciesSelected != null && !vacanciesSelected.isEmpty() ) {
Set<Vacancy> vacanciesForCandidate = // Do something with the set
model.addAttribute("vacanciesForCandidate", vacanciesForCandidate);
}
}

不依赖于方法排序的强大解决方案。

关于java - ModelAttribute 注释的多个方法。如何设置方法的调用顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18783842/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com