Pregunta

Tengo un caso de uso donde quiero establecer el valor de un campo que guardo en la sesión y he añadido a la. Guardo 'myModel' en flowScope

Ahora me gustaría establecer una propiedad de cadena de myModel objeto si está vacío, por lo que yo quiero hacer algo como esto:

<on-render>
    <evaluate expression="if empty(flowScope.myModel.name)) 
           flowScope.myModel.name = myModel.suggestName()" />
</on-render>

donde suggestName () es una instancia-método de la clase de myModel que devuelve una cadena SPEL me dice lo siguiente al evaluar la expresión:

EL1041E:(pos 3): After parsing a valid expression,
there is still more data in the expression: 'empty'

Así que supongo SPEL no conoce la función de 'vacío' como norma EL hace (por ejemplo, para la verificación de una cadena vacía)

En el manual de resorte (6.5.9 Funciones) leí que podría registrar mis propias funciones. De esa manera podría registrar una función de emptyString y delegarla StringUtils.isEmpty ()

¿Cómo iba a hacer eso? ¿Es el enfoque correcto? Puedo leer en la web-fluir manual de cómo registrar un expressionParser implícita pero realmente cómo agregar la función a la StandardEvaluationContext es un misterio para mí.

Cualquier ayuda se agradece

¿Fue útil?

Solución

debe ser capaz de ejecutar métodos en un objeto String, a fin de tratar flowScope.myModel.name.isEmpty() o flowScope.myModel.name.length() == 0

Si eso no funciona flowScope.myModel.name == "" tendrá el mismo efecto.

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