gpt4 book ai didi

java - 如何使模型属性全局化?

转载 作者:IT老高 更新时间:2023-10-28 13:48:11 31 4
gpt4 key购买 nike

我正在使用 Spring MVC 框架,我希望 View 的所有 .jsp 页面都可以访问用户的属性(姓名、性别、年龄...)。到目前为止,我在每个Controller中使用Model(UI)addAttribute方法将当前User的属性传递给View。有没有办法只做一次并且避免在每个 Controller 中使用相同的代码?

最佳答案

您可以像这样在新的 Controller 类上使用 Spring 的 @ControllerAdvice 注释:

@ControllerAdvice
public class GlobalControllerAdvice {

@ModelAttribute("user")
public List<Exercice> populateUser() {
User user = /* Get your user from service or security context or elsewhere */;
return user;
}
}

populateUser 方法将在每个请求上执行,因为它有一个 @ModelAttribute 注释,所以方法的结果(User object) 将通过 user 名称为每个请求放入模型中,它在 @ModelAttribute 注释上声明。

在使用 ${user} 之前,用户将在您的 jsp 中可用,因为这是赋予 @ModelAttribute 的名称(例如:@ModelAttribute( "fooBar") -> ${fooBar} )

您可以将一些参数传递给 @ControllerAdvice 注释,以指定此全局 Controller 建议哪些 Controller 。例如:

@ControllerAdvice(assignableTypes={FooController.class,BarController.class})

@ControllerAdvice(basePackages={"foo.bar.web.admin","foo.bar.web.management"}))

关于java - 如何使模型属性全局化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33876699/

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