3

spring3コントローラーで、いくつかのパラメーターを持つアクションメソッドを作成できます 魔女は春によって設定されます

@RequestMapping(value="/updateTemplate")
public void doStuff(HttpServletRequest request, Locale locale) {
  assert request != null;
  assert locale != null;    
}

Spring に独自の定義済みデータ型を満たすように教えるにはどうすればよいですか?

@RequestMapping(value="/updateTemplate")
public void doStuff(HttpServletRequest request, Locale locale, MyClass myClass) {
  assert myClass != null;
}
4

2 に答える 2

2

WebArgumentResolverを使用する必要があります

public class MyClassWebArgumentResolver implements WebArgumentResolver {
    public Object resolveArgument(MethodParameter param, NativeWebRequest req) throws Exception {
        if (param.getParameterType().equals(MyClass.class)) {
            MyCLass obj = new MyClass();
            ....
            return obj;
        }
        return UNRESOLVED;
    }

} 

それを springmvc に登録します。

<mvc:annotation-driven >
    <mvc:argument-resolvers>
       <bean class="com.xxx.MyClassWebArgumentResolver" />
    </mvc:argument-resolvers>
</mvc:annotation-driven>

その後、コントローラーで使用できます

@RequestMapping(value="/updateTemplate")
public void doStuff(HttpServletRequest request, Locale locale, MyClass myClass) {
    assert myClass != null;
}
于 2012-05-17T15:04:15.230 に答える
0

Spring には、HttpMessageConverterまさにこれを行うという名前のクラスがあります。着信のさまざまなメンバーを取り、HttpServletRequestそれらを使用してオブジェクトを作成し、それをメソッドに渡しますControllerHttpMessageConverter最良の部分は、 が に追加されている場合、これが自動的に行われることです(ここで説明されているApplicationContextを介して)。AnnotationMethodHandlerAdapter

すでに存在するビルド済みの実装が多数あり、HttpMessageConverter上記のリンク先のページでそれらの多くを見つけることができます。おそらく最も役立つのはMappingJacksonHttpMessageConverter、JSONObject をリクエスト本文から JavaBean にMarshallingHttpMessageConverterマップするために使用される と、XML をリクエスト本文から JavaBean にマップするために使用される です。

于 2012-05-09T13:37:44.697 に答える