@RequestMapping("/form")
public String form(Model model, Integer id)
せずにパラメータ名を取得する方法を、春には、パラメータIDの名前はIDです知っていると、それはあなたのためにそれをしないWebDataBinder
のランタイムは、春には例えばデバッグ情報
@RequestMapping("/form")
public String form(Model model, Integer id)
せずにパラメータ名を取得する方法を、春には、パラメータIDの名前はIDです知っていると、それはあなたのためにそれをしないWebDataBinder
のランタイムは、春には例えばデバッグ情報
をチェックする必要がこれは、あなたがそれを有効にする-parameters
javacコマンドラインオプションを含める必要がJDK 8で導入されたのjavacの機能です。そして、あなたはこのようにパラメータ名を取得することができます:春のドキュメントから
String name = String.class.getMethod("substring", int.class).getParameters()[0].getName()
System.out.println(name);
3.3 Java 8 (as well as 6 and 7)
あなたはまた、として( -parametersコンパイラフラグに基づく)は、Java 8のパラメータ名の発見を使用することができますデバッグ情報を有効にしてコードをコンパイルする代わりに
パラメータ名の発見は常に可能ではなく、様々な 戦略は、このような放出された可能性があり、デバッグ情報 を探しているとして、試して使用できます。ParameterNameDiscovererクラスのJavadocで指定されているように
コンパイル時にargname のAspectJアノテートメソッドにオプションで付随するアノテーション値を探します。
この春プロジェクトに関連するJIRA項目へのリンクですJava 8 parameter name discovery for methods and constructors
でそれに要求のparamの値をバインドすることができます。
あなたがAPIに見ることができるように、WebDataBinderはJavaBeanのオブジェクトにWebリクエストパラメータからデータバインディングのためです。
WebDataBinderも検証と変換を担当しています。そのため、エディタやバリデータをカスタマイズした場合は、以下のようにコントローラのwebDataBinderに追加する必要があります。詳細については、
@Controller
public class HelloController {
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator(yourValidator);
binder.registerCustomEditor(the clazz to conver to.class, "the name of the parameter", yourEditor);
}
...
、ドキュメントに
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html
は、Javaコンパイラは、デフォルトではクラスファイルにデバッグ情報が含まれています。したがって、JVMは実行時にパラメータ名を推測できます。 'Integer id'は実行時に' id'として見つけられます。コードがデバッグ情報なしでコンパイルされた奇妙なケースでは、パラメータ名は '@RequestParam(name =" id ")Integer id'として指定できます。 – manish