セッションで保持し、に追加したフィールドの値を設定したいユースケースがあります。'myModel'をflowScopeに保持します
ここで、オブジェクトmyModelのStringプロパティが空の場合に設定したいので、次のようにします。
<on-render>
<evaluate expression="if empty(flowScope.myModel.name))
flowScope.myModel.name = myModel.suggestName()" />
</on-render>
ここで、suggestName()は、文字列SPELを返すmyModelクラスのインスタンスメソッドであり、式を評価するときに次のように通知します。
EL1041E:(pos 3): After parsing a valid expression,
there is still more data in the expression: 'empty'
したがって、SPELは標準のELのように関数'empty'を認識していないと思います(たとえば、空の文字列をチェックします)
春のマニュアル(6.5.9関数)で、自分の関数を登録できると読みました。そうすれば、emptyString関数を登録して、StringUtils.isEmpty()を委任できます。
どうすればいいですか?それは正しいアプローチですか?式パーサーを暗黙的に登録する方法はWebフローのマニュアルで読むことができますが、実際に関数をStandardEvaluationContextに追加する方法は私には謎です。
どんな助けでも大歓迎です