問題タブ [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.
java - @ PostConstruct&チェックされた例外
@PostConstructドキュメントでは、注釈付きメソッドについて次のように述べています。
「メソッドはチェックされた例外をスローしてはなりません。」
たとえば、そのようなメソッドでスローされる可能性のあるIOExceptionをどのように処理しますか?それをRuntimeExceptionでラップし、ユーザーにオブジェクトの初期状態の誤りを心配させますか?または、@ PostConstructは、依存関係が注入されたオブジェクトを検証および初期化するための間違った場所ですか?
jsf-2 - @PostConstructは、JSF2 / CDIで更新される他のSessionScopedBeanの前に呼び出されましたか?
アプリで奇妙な動作をします。SessionScopeBean(Bean A)を使用してユーザー設定を保持します。RequestScopeにある他のBean(Bean B)で、SessionScopeBeanを注入します。
Bean Bには、BeanAの値に応じてデータベースから値のリストを取得する@PostConstructメソッドがあります。ユーザーがBeanAの値を変更し、その時点でBean Bの値が正しくない場合、アプリケーションは混乱します。 PostConstructメソッドが呼び出されます。ログでテストしました。
すべてのセッターメソッドは、アプリケーションフェーズの呼び出しの前に更新されると思いますか?
コードサンプルは次のとおりです。
Bean A:
Bean B:
サンプルログ:
ご覧のとおり...最初の2つのログは正しいです...ユーザーが設定を変更した場合(SessionBeanを更新した場合)、ビューはJSFで再レンダリングされ、最後の2つのログは正しい順序ではなく、アプリが混乱します。
助けてくれてありがとう。
ajax - @PostConstruct メソッドは、ManagedBean が既にインスタンス化されている場合でも呼び出されます (たとえば、AJAX 呼び出しで)
@ViewScope ManagedBean と @PostConstruct 初期化メソッドがあります。このメソッドは、新しいインスタンスが作成されたときに呼び出されますが、すべての ajax 呼び出しでも呼び出されます。これはなぜですか?
AJAX 呼び出しでは、init-Method が呼び出されて実行されますが、変更は表示されません。たとえば、init-Method のプロパティを変更すると、これは開始時にのみ表示され、AJAX 呼び出しでは表示されません。AJAX 呼び出しの場合、値の変更は @ViewScoped Bean では永続的ではありません。
なぜそうなのか誰にもわかりますか?どうすればこれを変更できますか?
hibernate - Spring + JPA + Hibernate: 起動時に挿入しない
@PostConstruct
アノテーション付きで起動時にメソッドを実行しています。このメソッドは、DB のテーブルに格納されている値をチェックする必要があります。存在しない場合は、挿入する必要があります。DB での値のチェックは正しく行われますが、永続化する必要がある場合、DB に書き込まれません。例外はスローされず、persist()
(明らかに) 問題なく実行されますが、DB に値が挿入されないだけです。
さらに、すべてが完了したら、そのメソッドを手動で (コントローラーなどから) 呼び出すと、値が正しく挿入されます。
何が間違っているか知っていますか?
敬具、ミゲル
java - @PostConstructメソッドが同じリクエストに対して2回呼び出されました
GlassFish3.0でJSF2.0を使用しています。
私は次のマネージドBeanを持っています:
overview.xhtmlファイルから、OverviewControllerからさまざまな属性またはメソッドを呼び出しています。
すべてが正常に機能しますが、問題はログファイルにあります。
ご覧のとおり、init()メソッドは、理由もなく同じリクエストで2回呼び出されます。私の知る限り、PostConstructで注釈が付けられたメソッドは、リクエストごとに1回呼び出されます。私が間違っている?
編集: ページでAJAXは使用されていません。ファイアバグでリクエスト数を確認しました。行われたツリーリクエストがあります:
- 1.javax.faces.resource (GET)用に1つ
- 2.cssファイル用に1つ(GET)
- 3.overview.xhtml用の1つ(GET)
jsf - @SessionScoped Beanはスコープを失い、常に再作成され、フィールドはnullになります
JSF2.0プロジェクトのSessionScopedBeanに非常に奇妙な問題があります。Netbeans 6.9.1、Glassfish 3サーバー、およびPrimeFaces3をJSFコンポーネントライブラリとして使用します。
ここにいくつかのコードがあります:
つまり、基本的に、GenreLabelListJSFと呼ばれる別のセッションスコープのBeanをLabelDetailJSFに注入しました。dataTable内にDetailLabelGenreListを表示したいと思います。これは、データテーブルを表示するために使用されるXHTMLスニペットです
ページが読み込まれると、最初にいくつかの行が含まれるテーブルが表示されます。ページングボタンをクリックすると、楽しみが始まります。
すべてのSystem.outステートメントからの出力を確認したところ、ページが最初に読み込まれたときに次のことがわかりました。
データテーブルのページボタンをクリックすると、次のように表示されます。
私が見ることができることから、それは豆がスコープを失い、常に再作成されるようなものです。最初は値があり、ページングが開始されるとBeanは値を失います。たとえば、ページングの開始時に@ManagedPropertyBeanもnullになることに気付きました。これは、セッションスコープのBeanでもあるため、ちょっとクレイジーです。
まだJSFの新しい手なので、私はおそらくいくつかの初心者の間違いを犯しました。最初にこれを誤ってViewScopedBeanとして作成し、BeanをSessionScopedに変更した後、アプリケーションをアンデプロイしてGlassfishを再起動し、ビルドして再度デプロイしたことを述べておく必要があります。
何か案は?
java - MyFaces - 抽象クラスの @PostConstruct
抽象クラスにある PostConstruct アノテーション付きメソッドを実行しようとしていますが、
しかし、Test を作成したときに init メソッドが呼び出されないのはバグでしょうか? サポートされていない機能? 間違ったコード?
Mojarra 2.1.6では動作します
MyFaces 2.1.6、Glassfish 3.1.2-b23
jsf - f:viewAction / preRenderView と PostConstruct をいつ使用するか?
f:viewAction
ページのデータを初期化するためにまたはpreRenderView
イベントを使用して、@PostConstruct
注釈を使用する必要があるのはいつですか? バッキング Bean のスコープのタイプに基づいて、どちらか一方を使用する根拠はありますか。たとえば、バッキング@RequestScoped
Beanが同じ効果をもたらしますか?f:viewAction
preRenderView
@PostConstruct
f:viewAction または preRenderView
また
@PostConstruct
jsf-2 - Weblogic 12c JSFは@PostConstructを呼び出さない(無視する)
要約すると、@PostConstruct を使用したメソッドは、マネージド Bean 上の WebLogic12c 上の JSF によって呼び出されません。
私は非常に基本的なアプリケーションを持っています。
使用技術: JSF2.0
アプリケーション サーバー: WebLogic 12c
ジャワ
XHTML
Managed Bean が JSF のインスタンスの場合、Managed Bean の beanTest は作成されます (通常のコンストラクターで入力) が、PostConstruct でメソッドに入らない (無視する、呼び出さない)。
WebLogic で表示されるテキスト: Enter to Construct 予期されるが、WL では表示されないテキスト: Enter to Construct - Enter to PostConstruct
アプリケーションは他のアプリケーション サーバーにデプロイされています。
- グラスフィッシュ 3.1.1
- グラスフィッシュ 3.1.2
- トムキャット 7.0.22
そして、期待される結果を示します。
この問題は JSF マネージド Bean (リクエスト、セッション、ビュー、アプリケーション) でのみ発生します。CDI を使用すると、PostConstruct が呼び出されます。しかし、JSF ViewScoped アノテーションを使用する必要があります。
何か考えがある人?
jsf - ページの読み込み中にFacesMessageを追加するにはどうすればよいですか?@PostConstructの使用は機能していないようです
バッキングBeanの@PostConstructメソッドで、EJBを呼び出します。これにより、p:messagesを介してページに表示したいメッセージが返される場合があります。ただし、FacesMessages(FacesContext.getCurrentInstance()。addMessage(...)など)を追加しても、p:messagesはFacesMessagesで更新されません。
代わりに、ページからのアクションでEJBの呼び出しを呼び出すと(たとえば、ユーザーがページ上のボタンをクリックして、EJBを呼び出し、FacesMessageを追加するメソッドを呼び出す)、メッセージはpを使用して表示されます。 :期待どおりのメッセージ。
@PostConstruct中にFacesメッセージを追加し、ページが最初にレンダリングされたときにそれらを表示するにはどうすればよいですか?
コード:
Page1Controller.java:
page1.xhtml