PropertyEditors in Spring 3

PropertyEditor è una interfaccia che fornisce un supporto per la conversione del valore di una proprietà (normalmente di tipo String) in un oggetto che può essere di tipo Date, Url, etc.
In Spring i beans sono definiti in un file di configurazione e i valori delle loro proprietà sono sempre rappresentati come stringhe come ad esempio:

dove la proprietà “number” contiene il valore “10” inteso come stringa e non come numero, anche se nella classe java del bean il membro “number” è definito come int come si vede dal seguente esempio:

  1. crea il file pom.xml

    in alternativa, se non usi Maven, puoi importare nella cartella “lib” i seguenti file .jar:

    • spring-context-3.1.2.RELEASE.jar
    • spring-aop-3.1.2.RELEASE.jar
    • aopalliance-1.0.jar
    • spring-beans-3.1.2.RELEASE.jar
    • spring-core-3.1.2.RELEASE.jar
    • commons-logging-1.1.1.jar
    • spring-expression-3.1.2.RELEASE.jar
    • spring-asm-3.1.2.RELEASE.jar
    • log4j-1.2.17.jar
  2. crea il file conf/app-context.xml (la cartella “conf” deve essere nel classpath)
  3. crea il file conf/log4j.xml (la cartella “conf” deve essere nel classpath)
  4. crea il file eu/lucazanini/propertyeditors/Main.java
  5. crea il file eu/lucazanini/propertyeditors/SimpleBean.java

L’output generato è:

Osserva che la stringa “10” è stata convertita nel corrispondente intero e la stringa “http://www.lucazanini.eu” è stata utilizzata per creare un oggetto di classe URL.
Questo è possibile perché Spring registra e utilizza implicitamente alcuni PropertyEditors e fra questi anche CustomNumberEditor e URLEditor.
Altri PropertyEditors invece devono essere registrati esplicitamente come ad esempio CustomDateEditor che richiede di specificare il formato della data.
Per verificarlo aggiungi la seguente proprieta a simpleBean in app-context.xml:

Se lanci l’applicazione ottieni il seguente errore:

Per registrare un CustomDateEditor e quindi evitare questo errore sostituisci il file app-context.xml

Ora l’output è:

Referenze:
Validation, Data Binding, and Type Conversion
Package org.springframework.beans.propertyeditors

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.