2016-04-07 18 views
3
@RequestMapping("/form") 
public String form(Model model, Integer id) 

olmadan parametre adları alır Nasıl parametre kimliğinin adını bilebilir bahar sizin için yapar WebDataBinder var zamanındaBahar ayıklama bilgi Örneğin

+1

Java derleyici varsayılan olarak sınıf dosyalarında hata ayıklama bilgilerini dahil ilgili JIRA öğesine bağlantıdır. Bu nedenle JVM, çalışma zamanında parametre adlarını çıkarabilir. "Tamsayı id", çalışma zamanında "id" olarak bulunur. Kodun hata ayıklama bilgisi olmadan derlendiği tekil durumda, parametre adları '@RequestParam (name =" id ") Tamsayı id 'olarak belirtilebilir. – manish

cevap

1

Bu aktif etmek için ona -parameters Javac komut satırı seçeneğini eklemeniz gerekir JDK 8. tanıtılan javactır bir özelliğidir kontrol etmeliyiz. Sonra böyle parametre adları almak mümkün olacaktır: Bahar belgeleri

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)

Ayrıca, bir şekilde ( -parameters derleyici bayrağı dayanarak) Java 8'in parametre adı keşfini kullanabilirsiniz Kodunuzu hata ayıklama bilgisiyle etkinleştirme alternatifi.

Parametre adı keşif her zaman mümkün değildir, ancak çeşitli stratejiler böyle yayılan olabilir ayıklama bilgisi arayan olarak, denemek için kullanılabilir: ParameterNameDiscoverer sınıf için javadoc belirtildiği gibi

derleme zamanında ve isteğe bağlı olarak AspectJ açıklamalı yöntemleri eşlik eden ek açıklama değerlerini arar.

Bu

Bahar projesi Java 8 parameter name discovery for methods and constructors

JDK Geliştirme Önerisi JEP 118: Access to Parameter Names at Runtime

1

kendisine kimliği ve bağlama isteği param en değeridir.

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/WebDataBinder.html

Eğer API üzerinde görebileceğiniz gibi

, WebDataBinder JavaBean nesnelere web isteği parametrelerinden bağlama verileri içindir.

WebDataBinder ayrıca doğrulama ve dönüştürme işlemlerinden de sorumludur, bu nedenle özelleştirilmiş düzenleyici veya doğrulayıcı varsa, bunları aşağıdaki gibi denetleyicinizde webDataBinder öğesine eklemeniz gerekir.

 @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); 
      } 
    ... 

fazla bilgi için, size belgeyi

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html