Frage

Ich habe einen usecase, wo ich den Wert eines Feldes gesetzt werden soll, die ich in der Sitzung halten und haben die hinzugefügt. Ich halte 'MyModel' in flowScope

Nun würde Ich mag eine String-Eigenschaft des Objekts MyModel setzen, wenn er leer ist, so dass ich, so etwas tun:

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

wobei suggestName () ist eine Instanz-Methode der Klasse von MyModel die einen String zurückgibt SPEL sagt mir die folgende, wenn die Auswertung des Ausdrucks:

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

Also ich denke, SPEL nicht weiß, um die Funktion ‚leer‘ wie Standard-EL tut (z Scheck für eine leere Zeichenfolge)

Im Frühjahr Handbuch (6.5.9-Funktionen) Ich habe gelesen, dass ich meine eigene Funktionen registrieren konnte. Auf diese Weise konnte ich eine Funktion registrieren und Leerstring delegieren StringUtils.isEmpty ()

Wie würde ich das tun? Ist es der richtige Ansatz? Ich kann in der lesen web-fließen Handbuch, wie eine expressionParser implizit zu registrieren, aber, wie man tatsächlich die Funktion der StandardEvaluationContext hinzuzufügen, ist mir ein Rätsel.

Jede Hilfe ist willkommen

War es hilfreich?

Lösung

Es soll möglich sein, Methoden zur Ausführung auf einem String-Objekt, so versucht flowScope.myModel.name.isEmpty() oder flowScope.myModel.name.length() == 0

Wenn das fehlschlägt flowScope.myModel.name == "" die gleiche Wirkung haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top