Viv*_*ath 4 java spring spring-mvc
我是Spring MVC 3的新手,我理解基本概念.我能够做一些简单的事情,比如创建控制器,服务和视图.但是,我还没有进入更先进的领域.因此,如果这个问题看起来很愚蠢(或不可能),我会道歉.
我想知道是否有办法拦截视图和/或响应并在它发送到客户端之前修改它?我想这就是Spring在向客户端发出的过程中执行数据绑定以形成元素的方式.我想要做的是检查域类中元素的注释,并根据这些注释修改视图.这将涉及在响应中注入新代码(HTML或Javascript).
UPDATE
当我想到这一点时,我意识到最终的渲染是由JSP完成的.所以我想问题是,是否有一种方法可以在模型移出页面之前拦截模型,并找出数据绑定到bean上的注释.
有没有办法做到这一点?
您可能正在寻找的类是org.springframework.web.servlet.HandlerInterceptor 您可以在该接口上实现postHandle方法,并且如签名所示,可以访问请求和响应,以及控制器创建的模型对象的映射.(和控制器本身,这是Object handler参数是什么.)
您可以通过将它们添加到调度程序servlet中的处理程序映射来"启用它们".
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<bean class="a.package.MyHandlerInterceptor"/>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
顺便说一句,绑定实际上是在HandlerAdapter内部完成的,它定位了Controller方法并调用它们,它不是拦截器.
编辑:要回答您的编辑,是的,您可以在控制器完成之后,但在进入JSP渲染之前,有机会获取模型对象并使用它.所以,你可以不喜欢添加myCustomScript的ModelMap折腾${myCustomScript}在<head>你的JSP中,得到了支持对象出来的ModelMap,并检查它,等等等等.
是的,实际上有很多方法:
preHandle/ postHandle方法并将拦截器应用于多个控制器| 归档时间: |
|
| 查看次数: |
5894 次 |
| 最近记录: |