問題タブ [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.
spring-security - @PreAuthorize:クラスの実装における参照プロパティ
私はサービスインターフェースを持っています
および抽象的な実装
のすべての実装にCompoundは、拡張する独自のサービスインターフェイスと、拡張CompoundServiceする独自のサービスクラスが必要CompoundServiceImplです。
ここで、のメソッドに基本的なセキュリティuisngアノテーションを追加したいと思いますCompoundService。私が理解している限り、実際の実装ではなく、インターフェースにそれらを追加する必要があります。ユーザーはの実装ごとに異なる役割を持つことができるので、Compoundこれを考慮に入れる必要があります。意味@PreAuthorize私は実装の名前を取得したいと思いCompoundます、例えば。compoundClass.getSimpleName()。だから私は次のようなものを手に入れます:
これは基本的にここで言及されていることです:
https://jira.springsource.org/browse/SEC-1640
しかし、例はなく、私は実際に解決策を得ることができませんでした。だから私は使うべきthisですか?または上記のように#root.this?
私の2番目の質問は、これは(春から)プロキシによって実装されるインターフェースにあるので、エクスプレッションthis.compoundClassは実際に適切に評価されるのでしょうか?
最後になりましたが、実際にこれをテストするにはどうすればよいですか?*
*私は実際に完成したアプリケーションを作成しているのではなく、特定の種類のデータベース検索用のフレームワークなど、構成可能なものを作成しています。つまり、ほとんどの承認と認証は実装者からのものでなければなりません。
spring-el - ThymeLeaf で使用するカスタム SpEL 関数
ここでの ThymeLeaf 新規質問: カスタム SpEL ユーティリティ オブジェクトを登録して、カスタム フォーマットを提供したいと思います。Spring ELのドキュメントには、これを行うには StandardEvaluationContext.registerFunction() を使用する必要があると書かれていますが、これはすばらしいことですが、ThymeLeaf テンプレートのすべての SpEL 関数でこれを使用できるようにしたいと考えています。これはサーブレット コンテキスト XML で行われていると思いますが、どうすればよいかわかりませんし、その方法を説明している ThymeLeaf のドキュメントも見つかりません。
java - FullAjaxExceptionhandler は javax.el.ELException または java.lang.Throwable のみをキャッチします
FullAjacExceptionHandler は、javax.el.ELException または java.lang.Throwable のみをキャッチできます。また、Throwable は javax.el.ELException よりも優先されます。マネージド Bean によってスローされた特定の例外を明示的にキャッチする必要があります。ただし、ELException は明らかに根本原因の例外 (つまり、LoginFailedException) をラップします。
私は JSF 2 (MyFaces 2.1.10)、Spring EL リゾルバー (Spring マネージド Bean)、el-api-2.2、glassfish el-impl-2.2 を使用しています。
エラーは次のとおりです。
LoginFailedException は単純なカスタム例外です。助けていただければ幸いです。前もって感謝します。
編集:実験が行われました:
LoginFailedException がスローされたときに呼び出される/使用されるエラー ページを確認するために、3 つのエラー ページを作成しました。XHTML エラー ページには、どれがどれであるかを識別するヘッダー文字列を除いて、まったく同じコードが含まれています。web.xml エラー エントリは次のとおりです。
catchAllThrowable.xhtml が使用されます。私が(web.xmlでコメントアウト)Throwableを削除すると、ELException.xhtmlが使用されます。ELException を削除すると、例外は loginError.xhtml ではなくコンテナー (tomcat) によって処理されます。
これで私のケースが明確になることを願っています。
アップデート:
私は現在、AJAX呼び出しを使用してフォームを送信しています(これがハンドラーの目的であると思います)。web.xmlで3つのエラーハンドラーページすべてがアクティブになっています(Throwable、ELException、LoginFailedException):
Throwable はスキップされ、ELException が一致しました (elException.xhtml がレンダリングされました)。まだ LoginFailedException をゼロにすることはできません。
java - Linux の Spring PropertyPlaceholderConfigurer
applicationContext.xml の構成:
ユーザーとルートの両方の.bashrcファイルに環境変数を次のように設定しました
Tomcatを起動するとエラーが発生します
私もこの方法で試しました:
今回はエラーが発生します
つまり、SpEL は applicationContext.xml 内で機能しますが、システム環境から変数をフェッチすることはできません。
値が正しく設定されているかどうかを確認するために実行echo ${WEB_ENVIRONMENT}したところ、値が正しく返されました。したがって、Javaが実行した環境から値を取得できるかどうかを確認するために
これも正しく「prod」を返しました
どちらのバージョンも Windows で実行されますが、Amazon EC2 の Linux AMI では実行されません。
それを機能させるために次に何を試すべきですか?
java - . Bean 名の文字と SpEL での使用
次のような単純なスプリング コンテキスト ファイルがあります。
上記のコンテキストを初期化すると、次のエラーが発生します。
acl.providerBean の名前をaclprovider(文字を削除)に変更すると.、すべてが正常に機能しました。
私の質問は次のとおりです。なぜ.ビーン名で文字を使用し、で使用するのSpELですか?
java - Spring Securityメソッドのルール:戻り値にコレクションが含まれている
Spring Securityでは、戻り値を組み込み、を使用するメソッドを保護したいと思います@PostAuthorize。
1人のユーザーが所有者ではないリソースにアクセスできないようにする制約を追加したいと思います。私が直面している問題は、プリンシパルIDを1つの値のコレクションに対してチェックしたいということです。
シナリオ:
ドメインオブジェクト:
サービス:
もちろん、このスペル表現は機能しません。
コレクションで機能する例は見たことがありません。 この未解決の質問は似ていますが、私の特定のシナリオに一致するかどうかはわかりません。そのようなことをすることは可能ですか?それは私がやろうとしていることをする別の方法ですか?
java - Spring Expression Lang (SpEL) 内のプロパティの評価
当社のサービスには、プロパティ ファイルに従ってスケジュールされたプロセスがあり、プロパティrefreshIntervalMillisを読み取ります。その値は、次の構成で Quartz トリガーに直接注入されます。
ただし、このサービスをインストールする管理者は時間/日で考えているため、作業を容易にするために、これを次のように変更しました。
- 名前がrefreshIntervalMillisからrefreshIntervalMinutesに変更されました
- 上記のコードを次のように変更します。
注: プロパティ オブジェクトは、「configurationProperties」という名前の Bean として公開されます。
同じことを達成するためのより簡単な構文はありますか?
ありがとう、
java - Spring EL:地図アクセスによる安全なナビゲーション
私はSpringELを使用して、ネストされたマップとリストのかなり複雑なセットから値を引き出しています。次のような表現が使えるようになりたい
[9]['firstSubKey']それがnullかもしれないことを除いて。安全なナビゲーションを正しく使用する方法がわかりません:試してみました
と
両方とも、ある種の解析エラーを返しました。私は最終的にそれを使用して動作するようになりました
しかし、それは厄介な感じがします。より良い方法はありますか、それともこれはSpringELにはない機能ですか?Spring3.1.3を使用しています。
関連して、未知の数の要素のリスト/配列がある場合、それを安全にチェックする方法はありますか?[5]IE 4つの要素の配列がある場合、 nullを返したい。そのまま、をスローしSpelEvaluationExceptionます。
spring - \r、\n、\t などに相当する Spring 式言語
私はSpring Integrationを使用しています。以下のような文字列 (ペイロード) を取得します。
<Element><Sub-Element>上記の文字列が実際にどれで 始まるかをテストする必要があります<Element>\r\n <Sub-Element>.
理想的には、最初のルーターがテストに合格する必要がありますが、この場合は不合格です。\r \n などの SpEL に相当するものを見つけるのを手伝ってくれる人はいますか?
spring - 関数を使用した SpEL
次の Bean を xml に追加します。
そして今、私がアプリケーションを実行すると、それは循環しています:
その Bean がなければ、正しく動作します。