2011-06-18 9 views
1

特定の値をパラメーターまたはヘッダーのいずれかでアプリケーションに送信できるシナリオをサポートしたいと思います。私はこのようにサポートしたいいくつかの議論をしています。Springのmvcマッピングヘッダーとパラメーター

これをSpring mvcアノテーションで実現するにはどうすればよいでしょうか?

ヘッダーが私に送信されることがありますが、時には同じキーのパラメーターが使用されることがあります。私のアプリケーションの観点からは、全く違いはありません。私の最善の方法は、JavaBeanにマップすることです。

可能ですか?

Yosi

答えて

2

最適なオプションは、カスタムのWebArgumentResolverを持つことです。その後、@ ParamOrHeaderなどでパラメータを注釈することができます。ここにexmmpleを見てくださいHow to pass a session attribute as method argument (parameter) with Spring MVCこれはセッション属性に関するものですが、それをparam-or-headerのために変更するのは簡単です

3

これらの両方を最初に空でないものにマッピングすることもできます。 Like:

ModelAndView methodDispatcher(@RequestParam(value = "X-Param", defaultValue = "") string header, @RequestParam(value = "param", defaultValue = "") string param) { 
    if (StringUtils.isNotEmpty(param)) { 
     return method(param); 
    } 
    if (StringUtils.isNotEmpty(header)) { 
     return method(header); 
    } 
    throw BadRequestException(); 
} 

ModelAndView method(String param) {} 
関連する問題