Eu tenho uma hierarquia uri do controlador semelhante ao exemplo abaixo.
@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
}
O que eu quero fazer é definir algum código paraexecutar antes de qualquer método manipulador em qualquer controlador filho. Por exemplo, eu gostaria de executar algum código antes do método doSomething ser chamado no DocumentsController. As coisas que quero fazer são exclusivas para uma hierarquia de URI específica.
Se eu usar um interceptor para executar antes doComo eu extraio os parâmetros de URI do URI, como o ID da empresa de / company / {id}? Eu realmente não quero juntar a URL à mão?
Um interceptador pode ser reduzido com um URI, como os mapeamentos interceptor / company / {id} do fazem entender os modelos de URI?
Respostas:
2 para resposta № 1Você pode usar interceptadores apenas para determinados URIs usando <mvc:mapping/>
e path
atributo para cada um:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/company/*/documents" />
<bean class="com.mypackage.DocumentsInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
Referência Aqui.