問題タブ [postconstruct]

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.

0 投票する
1 に答える
2838 参照

ajax - JSF の @PostConstruct メソッドは、マネージド Bean にビュー スコープが与えられている場合でも、すべての AJAX 呼び出しで呼び出されます。

次の簡単なテスト ケースが与えられます。

関連する JSF マネージド Bean:

または指定された が押されると<p:commandButton>、アクションリスナーに加えてメソッドが呼び出されます - 。<p:commandLink>init()action()

init()メソッドには、すべての AJAX 要求で不必要に呼び出されるべきではない高価なビジネス サービスが含まれている可能性があるため、これは発生しないはずです。

この動作を防ぐ方法はありますか? このinit()メソッドは、AJAX 呼び出しで呼び出されるべきではありません。

JSF 2.2.6 と PrimeFaces 5.0 final を使用しています。

0 投票する
1 に答える
1612 参照

jsf-2 - 単一ページの読み込み中にコントローラーが複数回挿入される

ページに移動するかアクションを実行するたびに、CustomerController が複数回挿入されます。私の CustomerController は Request Scoped であるため、各リクエストは新しいインスタンスが作成されて注入されることを意味することを理解していますが、私が見ているものは私には過剰に思えます。

たとえば、アプリケーションを (エラーなしで) デプロイした後、index.xhtmlページに移動します。index.xhtmlページから [顧客を追加] リンクをクリックすると、そのページに移動しcustomer.xhtmlます。これにより、customer.xhtmlページが読み込まれるまでに 16 回の CustomerController インジェクションが発生します。この線

CustomerController.init が呼び出されました

(および関連する出力) が 16 回表示されます。initメソッドには注釈が付けられているため@PostConstruct、CustomerController が注入された後に呼び出されます。

新しい顧客を保存しようとすると、printlnデバッグを支援するために行ったさまざまな呼び出しからログに 1,500 行が追加されます。ただし、コントローラーが何度も挿入されるため、それらのほとんどは繰り返しです。

CustomerController が何度も挿入されるのはなぜですか?

私が気づいたことは、javax.enterprise.context.RequestScopedクラスの代わりにクラスをインポートするjavax.faces.bean.RequestScopedと、期待する単一の注入動作が得られることです。これは、問題がJSFと(おそらく)JSFの使用にあり、Beanを一般的に注入する方法にあることを意味していると思います。

index.xhtml

顧客.xhtml

CustomerController.java

FormRequestController.java

web.xml

顔-config.xml

0 投票する
0 に答える
89 参照

java - URL でページに入った後、コントローラーが呼び出されない

私はこの URL を持っています:
https://localhost:8181/Platform2/faces/admin/applicationDetails.xhtml?applicantid=16&applicationid=5
ブラウザでこれを紹介すると、このページのコンテンツを見るためにログインする必要があります。申請者と申請書の詳細を表示する必要があります (申請者と申請書は、私の Web Maven プロジェクトのエンティティです)。問題は、これを行うと、ページが何も取得しないことです。URLを再度入力すると、目的のコンテンツが表示されます。私のJSF Webページは次のとおりです。

私のバッキングビーンは次のとおりです。

デバッグするためにinitメソッドにブレークポイントを入れて、最初は呼び出されません。更新すると、Bean が呼び出され、すべてが正しく機能します。なぜ最初に結果が出ないのですか?

0 投票する
0 に答える
112 参照

jsf-2 - @PostConstruct データが null になる

プライムフェイスを使用しています。にデータがありp:datatableます。ダイアログで行を編集しています。高速に(40秒未満で)実行すると、すべて問題ありません(データを保存できます)が、データをしばらく編集すると、Bean内のすべてのデータ(manegedBean、vievscope)が呼び出されnullPostConstructメソッドが呼び出されます-私編集された selectedRow データを失います。

0 投票する
1 に答える
142 参照

jsf - java.lang.IllegalArgumentException: Der Rückgabetyp der Lebenszyklusmethode [init] muss "void" sein

GlassFish Server を使用して、NetBeans で Java/jsf Web アプリケーションを作成しています。アプリケーションをデプロイしようとすると失敗し、次のエラーが発生しました。

GlassFish サーバー ログ ファイル:

0 投票する
2 に答える
444 参照

java - Spring autowired オブジェクトは postcontruct メソッドで null です

私は以下のセットアップを持っています

何が起こっている ?