abt*_*abt 2 java spring jsp spring-mvc
我想从我的 Spring MVC 控制器返回一个模型,它对我的应用程序中的所有页面都是可见的。
所以,我需要一个返回一些用户详细信息的变量。这是我的代码:
@RequestMapping(value = "/*", method = RequestMethod.GET)
public void status(Model model){
Authentication auth = SecurityContextHolder.getContext()
.getAuthentication();
String username = auth.getName();
Manager mgr = managerService.findOne(username);
model.addAttribute("buget", mgr.getTeam().getTeamBuget());
}
Run Code Online (Sandbox Code Playgroud)
在我的jsp页面中,我写的是这样的:
<li> <c:out value="${buget}" /> <span class="glyphicon glyphicon-euro"></span></li>
Run Code Online (Sandbox Code Playgroud)
我希望能够在我的应用程序的每个页面中打印 ${buget}。
所以,我的方法不起作用,我的页面中什么也没有出现,对我来说最大的问题是我没有得到任何可以帮助我的异常或错误。谁能帮我一些建议?
我不完全确定你想要做什么。你的意思是你想buget成为你点击的每个页面的一部分吗?如果是这样,您必须将其插入模型中。根据您的代码,我假设您有错误的印象,status无论您点击什么页面,都会被调用。Spring 将解析为最具体的处理程序,因此如果您在另一个更具体的控制器中有另一个处理程序方法,Spring 将使用它。但即使调用了您拥有的那个,Spring 怎么知道它必须调用下一个最具体的一个?那么如何将依赖于页面的模型属性添加到模型中呢?
如果您想buget成为每个回复的一部分,您可以使用@ControllerAdvice(有关更多详细信息的博客文章,请参见此处):
@ControllerAdvice
public class BugetControllerAdvice {
@ModelAttribute
public void addBugetToModel(Model model) {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String username = auth.getName();
Manager mgr = managerService.findOne(username);
model.addAttribute("buget", mgr.getTeam().getTeamBuget());
}
}
Run Code Online (Sandbox Code Playgroud)
Spring 现在将在每个控制器中的每个处理程序方法之前调用此方法。您还可以查看Spring 参考以获取更多信息。
| 归档时间: |
|
| 查看次数: |
2101 次 |
| 最近记录: |