問題タブ [codi]

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 に答える
111 参照

eclipse - Myface CODI が Eclipse で例外をスローしない

Eclipse IDE で Myfaces、Primefaces、Tomcat を使用して JSF 開発を行っています。テストを実行すると、Eclipse コンソールで Myfaces/Primefaces によって例外がスローされていました。

最近、MyFaces CODI と OpenWebBeans を追加して開発環境を強化しました。これを実行して以来、Eclipse コンソールにエラー メッセージが表示されなくなりました。理由がわかりません。

nullpointerexception、メソッド/変数が見つからないなどの基本的なエラーでさえスローされません。Myface CODI ステージを開発として設定しました。会話の開始と停止に関連する MyFace CODI メッセージを受け取りますが、すべての例外とエラーがスローされることはありません。

これらの単純なエラーを発見するために myfaces/primefaces/bean コードをデバッグするのはイライラします。

Eclipse環境で例外を再び取得するために何ができるかを誰かが提案できますか? この問題により開発が大幅に遅れているため、緊急の支援が必要です。

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

java - CDI - CODI - 生成時の ViewAccessScoped = エラー

そのようなベーキングビーンからデータを取得するjsfページで

java.lang.StackOverflowError が発生しました。

私のバッキングビーンはそのように見えます。プロデューサーにデータをキャッシュさせ、後でそれをオーバーライドしたいのです...

ViewAccessScope 中にリストを維持したいだけです

ところで、Producer を SessionScope に変更しても問題はないようです

サーブレットの例外は次のとおりです。

ループがそのように見えるスタックエラー:

0 投票する
3 に答える
3757 参照

jsf - 「ターゲットに到達できません。識別子 'bean' が null に解決されました」を修正するには?

@ViewScoped にアクセスするために、JSF 2.1.7 と Primefaces 3.2、CDI、および Apache MyFaces CODI を使用しています。

すべてが問題なく動作していますが、ui:param を介して Bean を別のページに渡し、その Bean を特に ap:ajax 要求で使用しようとすると、「ターゲットに到達できません。識別子 'bean' が解決されました。ヌル"

次に、page.xhtml でこれを実行しようとします。

bean.simpleModel への最初の呼び出しは適切に解決されます。bean.onMarkerDrag への ajax 呼び出しはそうではありません。

formBean の私の宣言は @Named("formBean"), @ViewScoped です。

何か案は?

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

ajax - CODIの@Advancedを使用したFacesConverterのCDI@Injectは、AJAXリクエストで機能しますか?

インジェクションを使用できるようにするために、sを使用し、それらに'sアノテーションを付けFacesConverterますCODI。これは通常のリクエストで機能します。ただし、リクエストに応じて、注入されたBeanはnullになります。そして、パラメータ@AdvancedCDIAJAXCDIFacesContext

インジェクションが機能する場合の通常の要求org.apache.myfaces.context.servlet.FacesContextImplの代わりになります。org.apache.myfaces.extensions.cdi.jsf2.impl.listener.request.CodiFacesContextWrapper

リクエストに応じてインジェクションを機能させる方法を知っている人はいFacesConverterますAJAXか?ありがとう。

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

jsf-2 - ViewMapListener JSF が呼び出されていない

@ViewScopedJSFアノテーションを CDIに移植しようとしています。その理由は、必要性に基づくというよりも、より教育的なものです。この特定のスコープを選択した主な理由は、CDI で実装したいカスタム スコープの具体的な例が不足しているためです。

そうは言っても、私の出発点はJSF アノテーションを CDIに移植すること@ViewScopedでした。しかし、この実装は、 APIで言及されているContext (つまり、破棄)の一見非常に重要な責任を考慮していません。

コンテキスト オブジェクトは、Contextual のオペレーションを呼び出して、コンテキスト インスタンスを作成および破棄します。特に、コンテキスト オブジェクトは、インスタンスを Contextual.destroy(Object, CreationalContext) に渡すことによって、作成したコンテキスト インスタンスを破棄する責任があります。破棄されたインスタンスは、後で get() によって返されてはなりません。コンテキスト オブジェクトは、インスタンスを作成したときに Contextual.create() に渡したものと同じ CreationalContext のインスタンスを Contextual.destroy() に渡す必要があります。

Contextオブジェクトを作成して、この機能を追加することにしました。

  1. どのsContextualに対してどのオブジェクトを作成するかを追跡します。UIViewRoot
  2. ViewMapListenerインターフェイスを実装し、UIViewRootを呼び出して、それぞれのリスナーとして自身を登録しますUIViewRoot.subscribeToViewEvent(PreDestroyViewMapEvent.class, this)
  3. Contextualが呼び出されたときに作成された をすべて破棄し、ViewMapListener.processEvent(SystemEvent event)それ自体を登録解除しUIViewRootます。

これが私のContext実装です:

Disposableインターフェースは次のとおりです。

スコープの注釈は次のとおりです。

CDI 拡張宣言は次のとおりです。

上記をCDIに正しく登録するために、javax.enterprise.inject.spi.ExtensionファイルをMETA-INF/services含むの下に追加しました。com.example.CustomContextsExtension

次のような Bean を作成できるようになりました (カスタム@ViewScoped実装の使用に注意してください)。

Bean は適切に作成され、JSF ページに適切に注入されます (つまり、ビューごとに同じインスタンスが返され、ビューが作成されたときにのみ新しいインスタンスが作成され、同じインスタンスが同じビューへの複数の要求に対して注入されます)。どうすればわかりますか?上記のコードにデバッグ用のコードが散らばっていると想像してください。

問題は、 myViewContext.isListenerForSource(Object source)ViewContext.processEvent(SystemEvent event)が呼び出されないことです。ビュー マップはセッション マップに格納されているため、少なくともセッションの有効期限が切れたときにこれらのイベントが呼び出されることを期待していました (正しいですか?)。セッションのタイムアウトを 1 分に設定して待機し、タイムアウトが発生したことを確認しましたが、リスナーはまだ呼び出されていません。

また、次のものを追加しようとしましたfaces-config.xml(ほとんどの場合、アイデアが不足しているため)。

最後に、私の環境はJBoss AS 7.1.1ですMojarra 2.1.7

手がかりは大歓迎です。

編集: さらなる調査。

PreDestroyViewMapEventが期待どおりに起動されている間は、まったく起動されていないようですPostConstructViewMapEvent- 新しいビュー マップが作成されるたびに、特にUIViewRoot.getViewMap(true). ドキュメントには、ビューマップで呼び出されるPreDestroyViewMapEventたびに起動する必要があると記載されています。clear()それは疑問に思います-そもそもclear()呼び出される必要がありますか? もしそうなら、いつ?

このような要件を見つけることができたドキュメント内の唯一の場所は次のFacesContext.setViewRoot()とおりです。

現在の UIViewRoot が null でなく、引数ルートで equals() を呼び出し、現在の UIViewRoot を渡して false を返す場合、UIViewRoot#getViewMap から返されたマップで clear メソッドを呼び出す必要があります。

これは通常の JSF ライフサイクルで、つまりプログラムで呼び出すことなく発生することはありますUIViewRoot.setViewMap()か? 何の兆候も見当たらない。

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

java - MyFacesCODI-プロジェクトに追加

私はMavenJSFWebアプリを開発しています。一部の@ViewScopedBeanで@PreDestroyを使用したいのですが、これはJSF 2.0では不可能です(またはページを閉じたりリダイレクトしたりする場合は不可能です)。MyFacesCODIの@ViewAccessScopedが解決策になる可能性がありますが、追加に問題があります。私がこれを試すとき:

コンパイル中にエラーが発生します。

依存関係のないプロジェクトはうまく実行されます。

エラーログを同封しています:

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

jsf-2 - Partial State Saving と MyFaces CODI での重複 ID エラー

PrimeFaces3.3、MyFaces+CODI、OpenWebBeans、および Tomcat7 を使用して JSF Web アプリケーションを開発しています。

特定のページ (後続のすべてのページ アクション) を表示した後、ID の重複エラーが発生します。デバッグでviewrootを分析したところ、重複するIDは実際には見つかりませんでしたが、「WindowContextIdHolderComponent」には重複としてスローされるID(j_id6)があることがわかりました。

PARTIAL_STATE_SAVING を「true」にして以来、この問題が発生し始めました。

タブを持つメインビューがあり、各タブにはメニューがあり、各メニューアクションはタブでページをロードします

以下は、私のアプリケーションのコードと構造です。

メインページ

Adminmain.xhtml ページ (タブ ページ)

以下は、重複IDエラーを引き起こすadminGalleryページです(他のすべてのページにはこの問題はありません)

このページは正しく表示されますが、このページの表示後のすべてのリクエストは重複 ID エラーで失敗します。

私のBeanはCODI WindowScopedです。

Duplicate Id に関するさまざまな提案された回答に基づいて、問題の潜在的な原因として ui:include のみが表示されます。しかし、タブ内またはタブ間で他のページに問題がないので、それは問題ではないと思います。

ここで何が問題であるか、および潜在的な修正を提案してください。

0 投票する
3 に答える
3057 参照

jsf - JSF CDI (溶接) 新しい会話を開始する

どうすれば CDI で新しい会話を開始できるのだろうと思いました。cid 要求パラメーターがない場合、コンテナーは新しい会話を開始するように見えますが、コントローラーから明示的に新しい会話を開始したい場合があります。

例: JSF ページを使用して、会話スコープのコントローラー Bean によるエンティティ保持を編集します。ajax リクエストが送信され、コントローラーのメソッドが呼び出されてイベントが発生し、新しい会話内の別のコントローラーで編集する必要があるサブエンティティが渡されます。その問題の解決策が見つかりません。私はすでに Apache Myfaces CODI を調べましたが、その問題を解決するパターンも見つかりません。

それから私を助けてください。

[編集] Ok。たぶん、私は問題を十分に詳しく説明していませんでした。もう一度試してください: 異なる (新しい) 会話 ID を持つ「同じ」会話スコープのコントローラー Bean の新しいインスタンスにアクセスしたい場合。それはどのように機能しますか?あなたが持っている画像..言ってみましょう.. 1つの Order エンティティを編集するための OrderControllerBean 。このコントローラーには、public void createSubOrder() のような JSF アクション メソッドがあります。このメソッドは、新しい Order を作成し、それを使っていくつかの凝った処理を行う必要があります。その後、別の会話 ID を持つ新しい OrderControllerBean インスタンスに渡す必要があります。おそらくCDIイベントを使用して。関係ない。問題は、OrderControllerBean が会話に既に存在することです。現在の注文を編集するために使用されます。そのため、作成したばかりのサブオーダーの作成および編集には使用できません。では、OrderControllerBean の新しいインスタンスを作成するにはどうすればよいでしょうか? たぶん、これはこれを行う正しい方法ではありません。しかし、これまでのところ、空白のcidパラメーターを使用してブラウザーを新しいURLに送信せずに、新しい会話を作成する別の可能性を見つけることができません. しかし、これらの会話の間で情報を交換することはできません。会話 1 で作成された非永続的な注文を、会話 2 の同じコントローラーに移動するにはどうすればよいですか? 私の問題は、会話の会話についてです。会話 1 で作成された非永続的な注文を、会話 2 の同じコントローラーに移動するにはどうすればよいですか? 私の問題は、会話の会話についてです。会話 1 で作成された非永続的な注文を、会話 2 の同じコントローラーに移動するにはどうすればよいですか? 私の問題は、会話の会話についてです。

[編集] ドキュメント全体と、これまでに付属しているすべての例を読みました。これらのステートメント (http://docs.jboss.org/cdi/spec/1.0/html/contexts.html#conversationcontext) によると、CDI 会話は JSF と密接に結びついているようです。残念ながら、技術的な詳細を詳しく説明しているドキュメントは見つかりません。新しいリクエストを送信して新しい会話を取得する方法は他にないため、新しい会話がいつどのように開始されるかについてのロジックをビュー レイヤーで直接保持する必要があります。それは間違いなく私が想像できる最善の方法ではありません。私の次の試みは Seam 3 の評価です。なぜなら、Seam 2 には @Begin および @End アノテーションがあり、会話をより詳細に制御できるようになったことを覚えているからです。会話の伝播を指定できるタグ ライブラリもいくつかありました。他の誰も私のような質問をしていないのはなぜだろうと思っています。現時点では、CDI が複雑なプロジェクトにあまり普及していないか、または物事がどのように機能するかを理解するのに大きな問題があります。これまでのところ、単純なデモ以上の CDI/CODI の例を見つけることができません。使用されているポータブル拡張機能に関係なく、会話の高度な使用を示す例へのリンクを誰かが持っている場合は、お知らせください。

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

java - Tomcat + CDI + JSF2 ですが、トランザクションはどこにありますか?

私の会社には、分散環境として tomcat 7 があります。JSF2 と CDI を tomcat 7 で連携させたいと考えています。これは、ここで説明されているように、あまり驚くことではありません: http://www.theserverside.com/tutorial/Working-with-CDI-and-JSF- 20-on-Tomcat-7-Configuring-Weld

私の問題はトランザクションに関するもので、Java EE 3 ソリューションがない場合は次のようになります。

  1. 手でやる: em.getTransaction().begin() ...
  2. 自分で作成した CDI インターセプターまたは CODI http://matthiaswessendorf.wordpress.com/2010/11/20/enterprise-java-without-ejbs-but-with-cdi-and-myfaces-codi/などを使用します。
  3. 春のトランザクションを使用しますが、私が知る限り、JSR 299 と 330 の間に問題があり、機能するには接着剤が必要です: http://matthiaswessendorf.wordpress.com/2010/05/06/using-cdi-scopes-with-春-3/

それで、あなたが私だったらどこに行きますか?CODIは私にはいいようです。

どうも