Question

J'ai un usecase où je veux définir la valeur d'un champ que je garde dans la session et ont ajouté à la. Je garde 'myModel' dans flowScope

Maintenant, je voudrais définir une propriété de chaîne de myModel objet si elle est vide, donc je veux faire quelque chose comme ceci:

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

où suggestName () est une instance de la classe procédé de myModel qui renvoie une chaîne SPEL me dit ce qui suit lors de l'évaluation de l'expression:

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

Alors je suppose que SPEL ne connaît pas la fonction « vide » comme EL standard ne (par exemple pour vérifier une chaîne vide)

Dans le manuel de ressort (6.5.9 Fonctions) Je lis que je pouvais enregistrer mes propres fonctions. De cette façon, je pourrais enregistrer une fonction emptyString et déléguer StringUtils.isEmpty ()

Comment puis-je faire cela? Est-ce la bonne approche? Je peux lire dans le manuel flux web comment enregistrer un expressionParser implicitement mais comment ajouter effectivement la fonction à la StandardEvaluationContext est un mystère pour moi.

Toute aide est appréciée

Était-ce utile?

La solution

Vous devriez être en mesure d'exécuter des méthodes sur un objet String, alors essayez flowScope.myModel.name.isEmpty() ou flowScope.myModel.name.length() == 0

Si cela échoue flowScope.myModel.name == "" aura le même effet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top