3

以下の例のようなコントローラー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階層に固有のものです。

ハンドラーメソッドの前にインターセプターを使用して実行する場合、/ company / {id}の会社IDなどのURIからURIパラメーターを抽出するにはどうすればよいですか?私は本当にURLを手作業で比較したくないのですか?

インターセプターは/company/ {id}などのURIで絞り込むことができますか?インターセプターマッピングはURIテンプレートを理解しますか?

4

1 に答える 1

2

<mvc:mapping/>インターセプターは、それぞれのpath属性を使用する特定のURIにのみ使用できます。

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/company/*/documents" />
        <bean class="com.mypackage.DocumentsInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

ここを参照してください。

于 2012-07-14T10:34:52.980 に答える