我有一个类似于下面示例的控制器uri层次结构。
@RequestMapping(value="company/{id}")
public abstract class BaseCompanyController
{
// variety of helper methods, protected autowired objects
}
@Controller
@RequestMapping(value = "company/{id}/documents")
public class DocumentsController extends BaseCompanyController
{
// document controller methods
@RequestMapping(value="something",.... etc)
public void doSomething(){}
}
@Controller
@RequestMapping(value = "company/{id}/financials")
public class FinancialsController extends BaseCompanyController
{
// financials controllers methods
}
我想要做的是定义一些代码,在任何子控制器中的任何处理程序方法之前执行。例如,我想在DocumentsController上调用doSomething方法之前运行一些代码。对于特定的URI层次结构,我要做的事情是唯一的。
如果我使用拦截器在处理程序方法之前执行,我如何从URI中提取URI参数,比如/ company /{ id }中的公司id?我真的不想手动裁剪URL吗?
拦截器是否可以通过/company/{id}之类的URI缩小范围拦截器映射是否理解URI模板?
发布于 2012-07-14 10:34:53
您只能对某些URI使用拦截器,并对每个URI使用<mvc:mapping/>
和path
属性:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/company/*/documents" />
<bean class="com.mypackage.DocumentsInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
参考here。
https://stackoverflow.com/questions/11479434
复制相似问题