【发布时间】:2019-01-04 12:59:33
【问题描述】:
我正在尝试从 @RequestMapping 路径中排除静态资源以避免对方法的冗余调用。
我试图简单地检查 url,如果它是一个什么都不做的资源,但拦截器在之后没有找到该资源,它仍然运行了这些方法,因为它们是用 @ModelAttribute 注释的。
GlobalController.java
@RequestMapping(value = "/")
public class GlobalControllerAdvice {
public static int k;
@Autowired
private UsersService usersService;
@ModelAttribute("unread")
public int unread(Principal principal) {
int unread = 0;
k++;
System.err.println("Inside unread " + k);
if (principal != null) {
User user = usersService.getWithUser(principal.getName(), "notifications");
for (Notification n : user.getNotifications())
if (!n.isRead())
unread++;
}
return unread;
}
}
资源处理程序
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("/resources/");
}
预期结果应该排除所有包含“静态”的 url,但现在它没有,并且我的 jsp 页面中的每个图像和脚本都会调用 unread()。
【问题讨论】:
标签: spring spring-mvc controller