Dav*_*rks 19 java controller spring-mvc
我有一些常见的组件,它们始终存在于给定Controller类所服务的每个页面中.
在每个@RequestMapping方法的开头,我使用这些常见组件填充模型.
有没有办法定义在每个控制器方法之前调用的方法,以便我可以将所有这些复制/粘贴到一个地方?
pto*_*mli 21
只需注释一个方法 @ModelAttribute
下面会在名称为"foo"的模型中添加一个Foo实例
@ModelAttribute("foo")
public Foo foo() {
return new Foo();
}
Run Code Online (Sandbox Code Playgroud)
请参阅@ModelAttribute
文档
Bad*_*dal 15
拦截器是解决方案.它有方法preHandler和postHandler,它们将分别在每个请求之前和之后调用.您可以挂钩到每个HTTPServletRequest对象,也可以通过挖掘它来传递几个.
这是一个示例代码:
@Component
public class AuthCodeInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
// set few parameters to handle ajax request from different host
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
response.addHeader("Access-Control-Max-Age", "1000");
response.addHeader("Access-Control-Allow-Headers", "Content-Type");
response.addHeader("Cache-Control", "private");
String reqUri = request.getRequestURI();
String serviceName = reqUri.substring(reqUri.lastIndexOf("/") + 1,
reqUri.length());
if (serviceName.equals("SOMETHING")) {
}
return super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
super.postHandle(request, response, handler, modelAndView);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32245 次 |
最近记录: |