Pregunta

Estoy intentando hacer referencia a otro objeto que he definido en un archivo de configuración de Spring desde una expresión. Específicamente, estoy intentando rellenar una propiedad con el valor de una expresión en la que llamo un método y luego una propiedad en el objeto devuelto por ese método.
He intentado lo siguiente (los nombres han sido cambiados):

<property name="NullableIntProperty"
          expression="#{Some.Object.Id}.Get().NullableIntValue"/>

donde Some.Object.Id es una referencia a otro objeto que he definido en un archivo de configuración como:

<object id="Some.Object.Id" ... >

pero mi aplicación no se inicia con la excepción de análisis que espera " COLON " ;, encontrado '}' . Creo que está esperando un espacio de nombres, pero no estoy encontrando la documentación para esto.

He intentado varias cosas, pero en todas partes llego a un callejón sin salida. Originalmente probé una combinación de MethodInvokingFactoryObject y PropertyRetrievingFactoryObject que usamos en otros lugares para los tipos que no aceptan nulos, pero esto falla para nullables que en realidad son null desde que Spring ve una fábrica de objetos que devuelve null como un error (como suele ocurrir).

¿Fue útil?

Solución

Puede usar la sintaxis de expresión @ (object-id-here) para recupere un objeto del contexto Spring usando una expresión :

<property name="NullableIntProperty"
          expression="@(Some.Object.Id).PropertyOnSomeObject"/>

Otros consejos

Cambiar # a $ debería arreglarlo, creo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top