gpt4 book ai didi

java - 从另一个 Controller 访问controlleradvice对象

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:08 25 4
gpt4 key购买 nike

我有一个 @ControllerAdvice 类,我用它来设置整个应用程序中的用户配置文件信息。通过这种方式,我可以在每个 JSP 中获取用户配置文件。但是,我尝试像这样在 @Controller 中访问该对象,但没有成功:

@ControllerAdvice
public class CommonControllerAdvice {

@ModelAttribute("PROFILE")
public Profile populateUserProfile(HttpSession session){
return (Profile) session.getAttribute("PROFILE");
}
}


@Controller
public class ActivityController {

@GetMapping("/view/activity/{id}")
public ModelAndView getActivity(ModelAndView modelAndView, @PathVariable Integer id) {
Profile profile = (Profile) modelAndView.getModel().get("PROFILE");
... ...
}
}

但我只得到一个 NullPointerException 因为配置文件为空。但是,我知道它不是 null 因为我可以在相关的 JSP 中使用它。

最佳答案

我找到了解决方案。只需将 @ControllerAdvice 类中定义的 @ModelAttribute 作为参数传递,而不是尝试从 ModelAndView 中获取它。

@Controller
public class ActivityController{

@GetMapping("/view/activity/{id}")
public ModelAndView getActivity (
ModelAndView modelAndView,
@ModelAttribute Profile profile,
@PathVariable Integer id) {
//Profile object is well populated
//However I don't understand why this model is empty
ModelMap model = modelAndView.getModelMap();
...
}
}

它解决了我的问题,我对此解决方案感到满意,尽管如此,我希望能够直接在 ModelMap 中访问此信息,但它是空的。我想知道为什么。

关于java - 从另一个 Controller 访问controlleradvice对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48720046/

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