2016-04-09 9 views
1

私は、フォーム変数を受け入れるコントローラーを標準の春MVCアプリケーションとしましょう。これらは単純なPOJO beanを編集する基本的な形式です。ユーザー、住所、毎日のもの、何も特別なものはありません。各BeanのHandlerMethodArgumentResolverに代わるもの

リクエストパラメータを自分のbeanにマップしたいので、コントローラメソッドに@RequestParamアノテーションの束がありません。私はいくつかの研究を行い、HandlerMethodArgumentResolverを見つける。そのトリックを行うように見えます。

しかし、のHandlerMethodArgumentResolverクラスをマップする必要があるすべての Beanにする必要がありますか?

私はそれらの多くがあり、それは多くの仕事のようです。私のパラメータ名は変数名と一致しているので、フロントエンドでフォームデータをJSONに変換して、それをAJAX呼び出しで送信し、コントローラで整列化することができます。しかし、これを行うよりクリーンな方法がありますか?

答えて

0

あなたはフロントエンドにあなたのフィールドを持つJSONを構築する場合、あなたはあなたのコントローラで@RequestBodyを使用することができます。

@RequestMapping("/something") 
public void someMethod(@RequestBody SomeClass data) { 
    // work with your data 
} 

SomeClassは、すべてのフィールドを持つ一般的なJava Beanに次のようになります。

public class SomeClass { 

    private int field1; 

    private String field2; 

    private double field3; 

    // getters & setters 
} 

これを動作させるには、JSONをシリアル化して逆シリアル化するHttpMessageConverterを設定する必要があります。私は、Jackson libraryがクラスパスにあることを検出すると、Springが自動的にこれを行うと思います。