kinjouj.github.io

Spring WebMVCのformとFormatterの件

2014-01-10T00:00:00+00:00 Java Spring Framework

※おそらくは書いてる内容は自分以外は理解しにくいと思いますので興味ないならCTRL+Wしてください(笑)

Spring WebMVCをやってみる (18) – AnnotationFormatterFactory -でも書いてるけど

「getPrinter実装してもどういう作用で発生するのかが謎」。普通にFormatterを使う場合とかだと等で作用されるっていうはあるのだけど、このAnnotationFormatterFactoryの事象だけはgetPrinterメソッドが作用する事が無い

っていう件に関して。結論から言うと「やり方が悪い」っていうだけだった模様

Spring WebMVCをやってみる (17) - Formatter -

2014-01-03T00:00:00+00:00 Java Spring Framework

前回のConverter同様に型を変換したりする仕組みな模様。@DateTimeFormatのようにアノテーションによって型変換を行うのも可能(後日書く)。んまぁ違い的な所としては非常に曖昧で微妙なのだけど、Formatterはインターフェースによりパースする所と出力サポートを行うメソッドを実装する必要がある。んまぁ詳しい違いとかわかり次第補足なりする予定

とりあえず使ってみる。題材的なのとしてEnumを変換する仕組み的なのを作ってみる

Spring WebMVCをやってみる (15) - TypeMismatch -

2013-12-25T00:00:00+00:00 Java Spring Framework

前回の「Spring WebMVCをやってみる (14) – @Valid+BindingResult+RedirectAttributes -」で書いたのをそのまま利用

前回だとSampleFormのnameプロパティだけをフォームで入力させて利用するっていうパターンだけやったのですが、SampleFormにはidプロパティもあるのでそれをフォームで入力させる際にあたって、数値(int)型では無い値を入れた場合のエラーメッセージはTypeMismatchを利用する事で出来る模様

Spring WebMVCをやってみる (14) - @Valid+BindingResult+RedirectAttributes -

2013-12-24T00:00:00+00:00 Java Spring Framework

前回で出した問題点として、「エラー表示はビューをレンダリングしているのでリロードするとPOSTなリクエストになる」って件。まぁ良くあるパターンなのかは微妙な所なんですが、対策として

  • ビューをレンダリングしないでフォームを出す所にリダイレクトする
  • リダイレクトする際にFlashスコープでエラーを突っ込んでおく
  • リダイレクト先で上記で突っ込んだエラーがあるのならば、それをビューで表示できるように構成する (BindingResult.MODEL_KEY_PREFIX + ModelAttributeな文字列をキーとする)

っていう感じじゃねーかと。んまぁ今回修正案として出すのはコントローラーだけ(それとテストも)

Spring WebMVCをやってみる (12) - RedirectAttributes -

2013-12-20T00:00:00+00:00 Java Spring Framework

んまぁSpring WebMVCでアクションからリダイレクトを利用したい場合等にはredirect:なプレフィックスを利用する事で出来るんだけれども

  • リダイレクト先にパラメーターを設置したい (リダイレクト先で@RequestParam)
  • フラッシュスコープを利用してリダイレクトしたい

っていう要件を検証してみた

Spring WebMVCをやってみる (11) - @RequestMappingのparams -

2013-12-18T00:00:00+00:00 Java Spring Framework

例えば

<form action="/swmvc/sample/index.action" method="post">
    <input type="submit" name="say1" value="say1" />
    <input type="submit" name="say2" value="say2" />
</form>

っていうようにターゲットとなるアクションは1つでサブミットによって処理されるアクションを切り分けたい場合には@RequestMappingアノテーションにparams属性で<input type="submit">で指定されてるname属性の値を指定すれば良いらしいとの事

Spring WebMVCをやってみる (10) - gsonを使う -

2013-12-15T00:00:00+00:00 Java Spring Framework JavaScript

例えば

  • @ResponseBodyアノテーションがついてるメソッドでStringじゃなくてオブジェクトだとかをぶん投げたりとか
  • @RequestBodyアノテーションがついてるメソッドの引数でStringじゃなくてオブジェクトだとかを指定したりとか

っていうケースな場合にJSONで投げられる事を前提とするのであれば、MessageConverterな方式を利用する事でサポート出来るらしいのでやってみた

Spring WebMVCをやってみる (4) - AbstractViewを利用した独自Viewを利用する -

2013-12-08T00:00:00+00:00 Java Spring Framework

前回のSpring WebMVCをやってみる (3) – 返せるレスポンスタイプに関して -でも書いたように、レスポンスを返す型としてView型を返す事も出来る。又、ModelAndViewにsetViewNameを利用する事でも独自のViewを使ってレスポンスを返却させる事が出来る。という事で使ってみた

Spring WebMVCをやってみる (3) - 返せるレスポンスタイプに関して -

2013-12-06T00:00:00+00:00 Java Spring Framework

大まかにSpring WebMVCでコントローラーアクション(@RequestMappingで処理されるメソッド)で返せる値の形式は

  • String (redirect/forward等のプレフィックスも含む)
  • ModelAndView
  • Map<String, Object>
  • String、又はbyte[]等で@ResponseBodyなアノテーションを付与
  • ResponseEntityを使用
  • org.springframework.web.servlet.Viewを使用

っていうような感じで値を返す事が出来る。もちろん値を返さないvoidでも引数にHttpServletResponseを利用してレスポンスを出す事も可能

ModelAndViewはSpring WebMVCをやってみる (2) – アノテーションを使わないコントローラー -で既に検証済みなので省略する。又、最後のViewに関しては後日別途で記事を書く予定になっているので今回は省略する。という事でコントローラー書いてテスト書いて検証してみる