1

OK、私の問題は次のとおりです。JSF アプリケーションといくつかの JSP ファイルがあります。ビューがあり、sub.jsp を含む main.jsp があるとします。これはうまくいきます。sub.jsp にはサブビューが含まれています。その結果、sub.jsp 内のフォーム要素のすべての ID は、「subview:component」の形式に従います。ここで、いくつかの ajax を使用していて、jsp ページ sub.jsp をフェッチし、それをどこかの DIV に含めたいとします。これで、ID はすべて「コンポーネント」の形式になりました。これを回避する方法がわかりません。インタラクティブな JavaScript で 2 つの異なる ID セットを確認する必要があるのは面倒です。一貫したIDを取得する方法はありますか?

私は試しました: サブビューの削除 - (ビューが見つからないため、AJAX 呼び出しは失敗します)

h:form prependid=false - サブビュー ID ではなく、フォーム ID のみを削除します

4

2 に答える 2

2

AJAXはJSFで行うのが難しいです。使用しているJSFフレームワークがそれをサポートしていない場合、多くのビューステートの問題が発生します。

sub.jspを直接アドレス指定しても例外がスローされないことに驚いています。sub.jspにはh:viewがなく、 UIViewRootがないと、UIツリーがどのように作成されるかわかりません。sub.jspにah:viewがある場合は、2つのUIViewRootをUIツリーに配置しています。これはバグです。(JSFコンポーネントツリーは、SwingやSWTなどの他のJavaウィジェットキットのツリーとほぼ同じです。)

あなたが観察している問題は、最初にレンダリングされたものとは異なるビューを送信していることだと思います。コンポーネントツリーは完全に異なるため、clientIdsは別のビュールートから生成されます。あなたはそれらがこの答えでどのように構築されているかについて読むことができます。

要するに、クライアントを更新するために使用しているメカニズムは有効なものではないと思います。

于 2008-11-18T17:16:37.047 に答える
0

ajax4Jsf (別名 Richfaces) を見たことがありますか?

于 2009-02-23T15:05:51.773 に答える