2

セッションで保持し、に追加したフィールドの値を設定したいユースケースがあります。'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に追加する方法は私には謎です。

どんな助けでも大歓迎です

4

1 に答える 1

3

String オブジェクトでメソッドを実行できるはずなので、flowScope.myModel.name.isEmpty()または試してみてくださいflowScope.myModel.name.length() == 0

それが失敗した場合flowScope.myModel.name == ""、同じ効果があります。

于 2010-06-25T10:16:19.470 に答える