/ / Como usar modelos de URI dentro de um Spring MVC Interceptor? - primavera, primavera-mvc

Como usar modelos de URI dentro de um Spring MVC Interceptor? - primavera, primavera-mvc

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 № 1

Você 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.