java
  • spring
  • spring-el
  • 2014-07-22 12 views 7 likes 
    7

    Sono abbastanza nuovo per Spring e ho una dichiarazione bean come segue.Come fare riferimento a una costante in Spring Expression Language

    <bean id="mybean" class="" scope="prototype"> 
         <property name='typeOf' value='#{typeOfBuilder.getKeyFor("OPEN_DATE").getId()}'/>  
    </bean> 
    

    typeOf è un tipo di numero intero che è la chiave di un'altra tabella che typeOfBuilder costruisce da Key che è OPEN_DATE in questo caso.

    questo codice funziona OK ma presenta una limitazione. OPEN_DATE è una costante in un NON-MANAGE Spring Bean qualcosa come segue.

    public final class Constants 
    { 
        public final static String KEY_FOR_OPEN_DATE = "OPEN_DATE";  
    } 
    

    e si consiglia vivamente di poter fare riferimento ad esso !!.

    qualcosa come questo.

    <util:constant id="PATH_TO_CONSTANT" static-field="myPath"/> 
    <property name='typeOf' value='#{typeOfBuilder.getKeyFor(PATH_TO_CONSTANT).getId()}'/> 
    

    qualsiasi aiuto è estremamente apprezzato.

    risposta

    10

    L'operatore speciale "T" può essere utilizzato per specificare un'istanza di java.lang.Class (il "tipo"). I metodi statici sono invocati usando anche questo operatore.

    Prova il codice qui sotto.

    <property name='typeOf' value='#{typeOfBuilder.getKeyFor(T(some.package.Constants).KEY_FOR_OPEN_DATE).getId()}'/> 
    
    +0

    funziona perfettamente grazie mille ... – chiperortiz

    Problemi correlati