問題タブ [spring-el]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ID にドット (.) を含む Bean にアクセスする
フロー定義で、ID にドットが含まれる Bean にアクセスしようとしています
(例:<evaluate expression="bus.MyServiceFacade.someAction()" />
しかし、うまくいきません。SWF は、代わりに Bean の「バス」を見つけようとします。
最初は、ヘルパー Bean を使用して必要な Bean をロードすることで解決しましたが、この解決策は洗練されておらず、不快です。Bean は大規模なシステムの一部であり、改ざんできないため、エイリアスの使用も問題外です。
一言で言えば、元の名前を使用して Bean を直接参照できるソリューションはありませんでした。それは現在の SWF リリースでも可能ですか?
spring - spring3 @Value を使用して PropertyPlaceholderConfigurer 値にアクセスしますか?
@Value
プロパティ ソースが のサブクラスである場合、を使用して Spring Bean に文字列の値を設定しようとしていますPropertyPlaceholderConfigurer
。誰でもこれを行う方法を知っていますか?
java - Spring 3 式言語はプロパティ プレースホルダーとどのようにやり取りしますか?
Spring 3 では、Bean 定義で使用できる新しい式言語 (SpEL)が導入されました。構文自体はかなり適切に指定されています。
明確ではないのは、SpEL が、以前のバージョンに既に存在していたプロパティ プレースホルダー構文と相互作用する場合、それがどのように相互作用するかです。SpEL はプロパティ プレースホルダーをサポートしていますか? それとも、両方のメカニズムの構文を結合する必要がありますか?
具体例を挙げましょう。プロパティ構文を使用したいのですが、が未定義の場合を処理するためにエルビス演算子${x.y.z}
によって提供される「デフォルト値」構文が追加されています。${x.y.z}
次の構文を試しましたが成功しませんでした:
#{x.y.z?:'defaultValue'}
#{${x.y.z}?:'defaultValue'}
最初のものは私に与えます
タイプ「org.springframework.beans.factory.config.BeanExpressionContext」のオブジェクトにフィールドまたはプロパティ「x」が見つかりません
これは、SpEL がこれをプロパティ プレースホルダーとして認識していないことを示唆しています。
2 番目の構文は、プレースホルダーが認識されないことを示す例外をスローするため、プレースホルダー リゾルバーが呼び出されますが、プロパティが定義されていないため、期待どおりに失敗します。
ドキュメントはこの相互作用について言及していないため、そのようなことは不可能であるか、文書化されていません。
誰でもこれを行うことができましたか?
わかりました、私はこのための小さな自己完結型のテスト ケースを考え出しました。これはすべてそのまま機能します。
まず、Bean の定義:
次に、自明な Bean クラス:
パッケージテスト;
最後に、テスト ケース:
${x.y.z}
課題 -解決できない場合にデフォルト値を指定できるようにする、Beans ファイル内の SpEL 式を考え出すこと。このデフォルト値は、別のプロパティ セットで外部化するのではなく、式の一部として指定する必要があります。
spring-security - Spring:セキュリティ式の解析に使用するパーサー
hasRole
などの標準的なセキュリティ式を解析して、変数(JSP内)で値を取得したいと思います。どうやってやるの?SpelExpressionParser
は標準のELパーサーですが、セキュリティ式を解析することはないと思います。
spring - Spring EL でプロパティ プレースホルダーを使用できますか?
Spring 3 にアップグレードする前に、applicationContext.xml ファイルに次のように記述しました。
${validateRequest) および ${validateRequest) は、プロパティ ファイルで定義されている場合と定義されていない場合があるプロパティを参照します。
Spring 2 では、これらのプロパティがプロパティ ファイルに存在しない場合、Bean のセッターが呼び出されなかったため、PolePayloadValidatingInterceptor でハードコーディングされたデフォルトが使用されました。
Spring 3 にアップグレードした後、動作が異なるようです。プロパティ ファイルにプロパティが存在しない場合、次の例外が発生します。
私はSpring ELを試してみましたが、以下はうまくいかないようです:
プロパティがプロパティ ファイルで定義されている場合でも、Elvis 演算子の後の値が常に使用されます。構文が受け入れられるのは興味深いことです。
助言がありますか?
java - spring-webflow2.1でSPELを使用して空の文字列をテストする
セッションで保持し、に追加したフィールドの値を設定したいユースケースがあります。'myModel'をflowScopeに保持します
ここで、オブジェクトmyModelのStringプロパティが空の場合に設定したいので、次のようにします。
ここで、suggestName()は、文字列SPELを返すmyModelクラスのインスタンスメソッドであり、式を評価するときに次のように通知します。
したがって、SPELは標準のELのように関数'empty'を認識していないと思います(たとえば、空の文字列をチェックします)
春のマニュアル(6.5.9関数)で、自分の関数を登録できると読みました。そうすれば、emptyString関数を登録して、StringUtils.isEmpty()を委任できます。
どうすればいいですか?それは正しいアプローチですか?式パーサーを暗黙的に登録する方法はWebフローのマニュアルで読むことができますが、実際に関数をStandardEvaluationContextに追加する方法は私には謎です。
どんな助けでも大歓迎です
java - どのパターンを使用できますか?
現在、確認ダイアログ ボックスをうまくサポートしていない Selenium 2 を使用してプロジェクトを実装しています。
この制限には回避策があります。window.confirm を上書きして、特定のテスト ケースに対して返す必要がある値を返すだけです。
次の文字列を設定して実行できます。
これはテンプレート メソッドとしては非常に簡単に思えますが、同じページ オブジェクトに複数のテスト ケースがあり、ページを操作した後に確認/拒否する必要があります。したがって、これらすべてのテストを一度に実行する単一のメソッドを持つことはできません。
テスト メソッドに実行するコマンドを挿入することは理にかなっている可能性がありますが、ここでの私の最終的な目標は、技術力の低いスタッフが XML にいくつかの文字列を書き込んでから Spring Expression Language で実行することでテストを作成できるようにすることです。これにより、テストを書く際の「容易さ」がいくらか失われます。
主な注意点は、このテスト スイートは実際には要件によるアプリケーションであり、個別に実行される一連のテスト ケースではないということです。小さなテスト ケースであれば、抽象的なテスト ケースを拡張して同じセットアップ ルーチンと分解ルーチンを利用できるので、はるかに簡単です。
私が最終的に探しているのは、このテンプレート メソッドに沿ったものですが、1 つのページ オブジェクトで複数のテスト ケースをサポートできる必要があります。
java - SpEL で値をエスケープするにはどうすればよいですか?
XML でいくつかの SpEL ステートメントを作成していますが、いつ文字をエスケープする必要があるかをパーサーに判断させることができません。
私は次のことを試みました:
ただし、\' を追加しても、その一重引用符がエスケープされないようで、パーサー例外が発生し続けます。
これらの値をエスケープする方法はありますか?
java - OGNL で Spring EL を使用する利点は?
Spring が Web フロー製品で OGNL よりも Spring EL を使用するようになった正確な理由を知りたいと思っていました。
OGNL を使用すると、単純なクラスを動的に作成し、メソッドなどをフローから直接実行できます。プレゼンテーションに基づいているため、実際の Web ページ テンプレート (つまり JSP) 内でこれを行うのは良い習慣ではないことはわかっていますが、Web フローはプログラムのロジックを制御し、そこで OGNL を効果的に使用する機能は非常に便利です。さらに、フローをテストして、簡単に機能することを確認できます。
だから、2つの質問:
特にSpring Webflowのコンテキストで、OGNLよりもSpring ELを使用することに大きな利点はありますか?
Spring EL を使用してオブジェクトを作成できますか?