問題タブ [stripes]
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 - JSP内でActionBeanContextにアクセスするにはどうすればよいですか?
Stripesは初めてで、機能するWebアプリに近づくためのヒントに感謝しています。
技術的なセットアップ:java、動的Webプロジェクト、ストライプ、jsp
シナリオ:
ユーザーはログインできます(index.jsp)。正しい電子メールアドレスとパスワード(LoginFormActionBean.java)の後、ユーザーはウェルカムページ(loggedin.jsp)に転送されます。このウェルカムページのコンテンツは、「ようこそ<ユーザー名>、正常にログインしました!」のようなものです。
実装:
index.jspにフォームがあり、ユーザー入力を取得して、LoginFormActionBean.javaのメソッドに渡します->動作します!
対応するメソッドで、ユーザーが正しいかどうかを確認し、正しい場合は、ActionBeanContextにユーザーを挿入します。
その後、loggedin.jspに転送します。
login.jspには、次の重要な行が含まれています。
LoggedinBean.javaには、MyActionBeanContext属性(LoginFormActionBean.javaなど)が含まれています。
私が使用するコンテキストからuserobjectを取得するには:
さらに、LoggedinBean.javaには、@ DefaultHandlerで注釈が付けられ、loggedin.jsp(同じページ)に転送されるメソッドが含まれています。
結果:
ここで、何が起こるかです。正しくログインした後、loggedin.jspに転送され、「$ {loggedinBean.context.user}」の行が空になり、<s:text>フィールドも空になります。
ただし、[PrintUser]ボタンをクリックすると、[TextForm]フォームの<s:text>フィールドに、ログインしているユーザーのユーザーオブジェクトが入力されます。
結論:
私が思うに、Beanでメソッドを手動で実行する前に、LoggedinBean.javaの「setContext()」メソッドが呼び出されないということです。ボタンを押す前にBeanの「setContext()」メソッドが呼び出されないためです。
オンラインドキュメントには、JSPでコンテキスト属性を使用するように記載されています。「${actionBean.context.user}」と記述してください。しかし、コンテキストはnullです!
「実用的なストライプ」(2008)の本でさえ、ActionBeanContextの使用に関する情報はこれ以上ありません。
質問:
そこで何が起こりますか?
「${loggedinBean.context.user}」行を取得して、ログインしているユーザーを表示するにはどうすればよいですか?
また、JSPをロードした後、ボタンを押さずに<s:text>フィールドを取得してユーザーオブジェクトを表示するにはどうすればよいですか?
私の問題が明確で、私の発言が満足のいくものであることを願っています
java - guice が以前にインスタンス化された @SessionScoped オブジェクトを注入しないのはなぜですか?
私は@SessionScopedを持っていますか?(後続の呼び出しで) インターセプターから検出されたように見えるが、同じ要求 (およびセッション) でサービスに挿入されていない、Stripes フレームワークのインターセプター コンストラクターに挿入されている DAO。(インターセプターで初期化された) 同じインスタンスが (同じプロジェクトの別のパッケージにある) サービスで再利用されないのはなぜですか?
DAO を @Singleton にするとうまくいきますが、同じ DAO インスタンスを共有する複数のユーザーがいるアプリケーションでは、ユーザーのセッション全体で一貫性を保つ必要がある情報を DAO が格納するため、これは受け入れられません。
java - ストライプフレームワークの単体テスト:NullPointerExceptionを与えるMockServletContext
編集:あなたは私が以下に書いたもののほとんどを無視することができます:
いくつかのTestNGコードで次のことを行うと、コンテキストのnull値を取得しています。
nullではないMockServletContextオブジェクトを作成するために、さらに何かを行う必要がありますか?
オリジナル:TestNGでStripesFrameworkを使用する方法を学んでいます。
私はここの例に従っています(ただし、それを自分のコードに適合させています):http ://www.stripesframework.org/display/stripes/Unit+Testing under the heading Approach 2
私はこのテストを持っています:
この「TestFixture」は、それが何であるかを実際にはわかりません。
このエラーが発生します
FAILED: seedSearchTest
java.lang.NullPointerException
at net.sourceforge.stripes.mock.MockRoundtrip.getUrlBindingStub(MockRoundtrip.java:384)
at net.sourceforge.stripes.mock.MockRoundtrip.<init>(MockRoundtrip.java:96)
at net.sourceforge.stripes.mock.MockRoundtrip.<init>(MockRoundtrip.java:82)
at sempedia.tests.action.SeedSearchActionBeanTest.seedSearchTest(SeedSearchActionBeanTest.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
この行MockServletContext ctx = TestFixture.getServletContext();は機能していないと思います。何か足りないものがあるのではないかと思います。特に、web.xmlで何かしなければならないことがありますか?
java - ストライプフレームワーク:フォームで文字列のエスケープを無効にするにはどうすればよいですか?
私はストライプフレームワークを使用してWebアプリケーションを実現しています。あらゆる種類の攻撃を回避するために、テキストはDBにサニタイズされて保存され、サニタイズプロセスにはHTMLエンティティのエンコードが含まれます。
縞模様のフォームを作成すると、問題が発生します。フォームが空になったら、すべて問題ありません。ただし、ユーザーが以前にこのフォームを入力し、既存の値がDBからフェッチされ、アクションBeanに設定されてから、ストライプフォームタグによって表示される場合、ストライプは再びそれをエスケープします。これにより、文字列が二重にエスケープされます。
とにかく、私が何をしているのかを知っていて、あなたに与えている文字列がすでにエスケープされていることをストライプに伝えることができますか?
java - Stripesが好きですが、ロギングにsl4j / logbackを使用していますが、どのようなオプションがありますか?
ストライプにはcommong-loggingが付属しているため。コモンズロギングなしでWebアプリケーションでストライプを使用する際の私のオプションは何ですか。どうすればsl4jログライブラリに置き換えることができますか?
java - ストライプ Web フレームワークで groovy を使用する
Stripes Web フレームワークを使用する Java プロジェクトに参加する予定です。個人的には、Java よりも Groovy を作成する方がずっと好きで、このプロジェクトで Groovy を使用する機会を探しています。
おそらくStripesプロジェクトでGroovy(Javaの代わりに)を使用できる場所の例を探しています。Groovy を Stripes で動作させるために必要な特定の手順 (ビルドの変更など) はありますか?
特に、Stripes アプリケーションで GORM と GSP を使用できるかどうか知りたいです。
ありがとう、ドン
java - 最初の Stripes プロジェクトの構成に関する問題
どうやら、Stripes の設定で技術的な問題が発生しているようです。
Eclipse ganymede を使用していますが、メイン プロジェクトまたは jsp からプロジェクトを実行しようとすると、Tomcat から 404 エラーが発生します。
これは私のプロジェクトの構造です:
web.xml: ストライプ
どうやら、jar は正しくロードされ、パッケージは適切な場所にあります。 jsp ファイルを個別に実行すると、Tomcat はそれを見つけられません。助言がありますか?ありがとうございました!
java - Stripes アクションを Web アプリのウェルカム ファイルとして使用するにはどうすればよいですか?
Stripes が URL "Home.action" にバインドした HomeActionBean という名前のアクション Bean があります。URL バインディングが機能します。ここで、次のように「Home.action」をウェルカム ファイルとして使用したいと思います。
これは、Stripes クイックスタート ガイドのデフォルト構成では機能しません。エラーが発生します
リクエストは、StripesRequestWrapper にラップされずに、Stripes の一部に到達しました。[...]
行を追加すると機能することがわかりました
次のように私のweb.xmlに:
私の質問は、Stripes アクションをウェルカム ファイルとして使用する適切な方法ですか? 「FORWARD」を含むその行を web.xml に追加すると、他の望ましくない結果が生じる可能性がありますか?
java - クラスパスでStripesResources.propertiesを見つける際の問題
Stripesのメッセージを操作しようとしています。これはStripesReesources.propertiesファイルにある機能で、ほとんどのチュートリアルと私の本によれば、メインクラスパスのsrcフォルダーの下に配置する必要があります。さらに、それが機能しなかったので、私はそれをフォルダ呼び出し元「res」にも配置しました。サブフォルダとしてWEB-INF、何もありません。TomcatはJasperExceptionをスローします。
Stripesに必要なエラーメッセージリソースバンドルが見つかりませんでした。これはほぼ間違いなく、「StripesResources.properties」というプロパティファイルがクラスパスに見つからなかったことを意味します。
私は、、、良いIDEを使用Tomcat 6しJDK 6ていますが、別のIDEでも機能しないため、Idesの問題ではないと思います。「しかし、このWebページはもう見つかりません」を読んだところ、この機能もweb.xmlで明示的に宣言する必要がありますが、公式のStripesFramework Webサイトでも何も表示されないため、構成は必要ありません。StripesResurces.properties
何かアドバイスはweb.xmlで?
ありがとうございました
eclipse - Stripes が自分の ActionBean を認識しない
今回はリンクタグでStripesに少し問題があります。基本的には、次のようにjspからアクションBeanを呼び出しています。
私が受け取る例外は次のとおりです。
そのクラスは (BaseActionBean と呼ばれるクラス ヘルパーを介して) ActionBean を実装し、@DefaultHandler を含むため、これは正しくありません。
なぜそれが機能しないのか本当にわかりません。以下に2つのクラスを投稿します
}
ヘルパー:
}