質問

外国のJSFアプリケーションをデバッグしています。問題は、フォームを送信することですが、値は引き継がれていません。

フェーズリスナーでは、ライフサイクルが完全に実行されないことがわかります。そのため、フェーズ2 -5:復元ビューフェーズの後、レンダリング応答フェーズが直接呼び出されます。適用値、検証、モデルアクションの更新などが恋しいです。

したがって、これは鶏と卵の問題になる可能性があります。1。責任あるフェーズは呼び出されないため、新しいフォーム入力を引き継ぐことはできません。 2.システムは新しい入力を認識していないため、ビューを復元した後に直接レンダリングします。

responsecomplete()oder renderresponse()の呼び出しがないことを確認しました。

私はどういうわけか立ち往生しています。 2つの仮説のいずれかを検証するアイデアはありますか?またはそれを一般的にデバッグする方法は?誰かが同様の問題を抱えていましたか?


アップデート

JSFが気づいていないという疑いがあります ポストバックリクエスト そして、これをandのように処理します 最初のビュー. 。それは、私がフェーズ1と6のみを通過することを説明するでしょう。

JSFがこれを 非faces-request?
適切なものがあるかどうかを確認するにはどうすればよいですか treeid 電流で facesContext.

役に立ちましたか?

解決 2

解決策を見つけました!申し訳ありませんが、非常にアプリケーションに特化していました。JSFのカスタムStateManagerは、JSF 1.2で使用できませんでした。それはこの奇妙なエラーを引き起こしました。 StateManagerを修正し、すべてが正常に機能しました。それは苦いもので、費用がかかります:-(

とにかくあなたの助けをありがとう:-)

他のヒント

私が投稿した答えから引用しています :

いつでも UICommand コンポーネントは、関連するアクションを呼び出していません。以下を確認してください。

  1. UICommand コンポーネントは内部に配置する必要があります UIForm コンポーネント(例: h:form).
  2. それはいけません ネスト 多数 UIForm お互いのコンポーネント(インクルードファイルで注意してください!)。
  3. 検証/変換エラーが発生してはなりません(使用 h:messages それらすべてを取得するために)。
  4. もしも UICommand コンポーネントは内側に配置されます UIData コンポーネント、まったく同じことを確認してください DataModel (背後のオブジェクト UIData's value 属性)が保存されています。
  5. rendereddisabled コンポーネントの属性とすべての親コンポーネントは、 false 適用リクエスト値フェーズ中。
  6. そうでないことを確認してください PhaseListener または何か EventListener リクエスト応答チェーンでは、JSFライフサイクルを変更して、Invokeアクションフェーズをスキップしました。
  7. そうでないことを確認してください Filter また Servlet 同じ要求に応じて、チェーンがリクエストをブロックしました FacesServlet 何とかして。

あなたの特定のケースでは、フェーズ2-5がスキップされているので、あなたは確信しています(?) FacesContext#renderResponse() 呼び出されておらず、原因3、6、7はリストからスクラッチすることができます。 JSFフェーズをデバッグする方法に応じて、原因4と5も傷つく可能性があります。他の原因を調査します。原因に関する私のセント2。見えない場合は確認してください <form><form></form></form> 生成されたHTMLソースで、これをJSFソースでバックトラックします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top