質問編集履歴

1 誤字修正

lupus_dingo

lupus_dingo score 275

2016/03/29 19:58  投稿

【Spring】HandlerInterceptorで設定した値をControllerのメソッドに引数以外で渡す方法
Javaの基本的な話なのかもしれませんが、教えてください。
HandlerInterceptorをimplementsして作成したpreHandleメソッドで
共通の変数を設定し、@Controllerや@Serviceでそれを使いまわすことはできるでしょうか?
例を挙げると、現在java.util.Localeをコントローラの@RequestMappingしたメソッドの
引数に指定してロケールによってメッセージプロパティを条件分岐しているのですが、
全てのコントローラのすべてのメソッドの引数にLocaleを追加するのもおかしい気がします。
```java
@Controller
public class UserController {
 @Autowired
 protected MessageSource messageSource;
 @RequestMapping(value = "/insert", method = RequestMethod.GET)
 public ModelAndView insert(HttpServletRequest req, Locale locale, ModelAndView mav) {
   String p1 =req.getParameter("param1");
   String message = messageSource.getMessage("hello.world", null, locale);
 }
}
```
理想↓
```java
@Controller
public class UserController extends BaseController {
 @RequestMapping(value = "/insert", method = RequestMethod.GET)
 public ModelAndView insert(HttpServletRequest req, ModelAndView mav) {
出し
   String p1 =req.getParameter("param1");
   // ↓スーパークラスでmessageSource.getMessage("hello.world", null, locale)を呼び
   // ↓スーパークラスでmessageSource.getMessage("hello.world", null, locale)を呼び出し
   String message = getMessage("hello.world");
 }
}
```
Springフレームワークのバージョンは3.1.1です。
  • Java

    17363 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Spring

    969 questions

    Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る