問題タブ [uiinclude]

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 投票する
2 に答える
7847 参照

jsf - ui:repeat 内で動的な ui:include を使用すると、NullPointerException が発生します

とを使用<ui:repeat>して、動的なダイアログ ウィンドウを作成したいと考えています。しかし、以下のように試してみると例外があります。<p:dialog><ui:include>

main.xhtml

MainView.java

例外:

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

java - ui:include を使用して JSF で動的エディターを表示する

タブビューに編集者のグループを表示したい。各エディターには、レンダリングされたエディターを格納するcomponentというプロパティがあります。単純なエディターは HTML タグを使用してエディターをレンダリングしますが、複雑なものは別のページで定義されたエディターを使用します。ツリーの構築時に値が使用できないためeditor.componentui:includeでは使用できないことがわかりました。この問題を解決するにはどうすればよいですか? この制限がない ui:include の代替手段はありますか?

編集1

web.xmlには次のエントリが含まれます。

custom.taglib.xmlは WEB-INF フォルダー内にあります。

DynamicInclude には注釈が付けられています@FacesComponent("ro.custom.DynamicInclude")

groups.xhtmlに、動的 include - の名前空間を追加しましxmlns:custom="http://www.custom.ro/"

EDIT2

最後に、私はそれを機能させることができました。欠けていたのは、handler-class(com.corejsf.tag.DynamicIncludeHandler) のエントリでした。DynamicInclude の getSrc メソッドで src の null をテストした行も削除しました。

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

java - ui:include JSF タグの背後にあるクラス

ui:includeタグはどのように実装されていますか? その実装 (ソース コード) はどこにありますか?

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

jsf - フェイスレットテンプレートのコンポーネントを非表示にするui:include?

テンプレートに含めているfaceletsコンポーネントを非表示にするにはどうすればよいですか?

私のtemplate.xhtmlで:

ui:includemenuSharepoint.xhtmlを非表示にしようとしています。

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

jsf - 使い方

<ui:include>1ページを動的に数回含めたい。

コード:

今私が提出するとき、それは最後のインクルードだけを持続させます。最後に含まれたページの値のみが記憶されます。各create_pageに一意のエンティティオブジェクトが必要です。どうやってやるの?

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

ajax - JSF:ui:includeと(壊れた)ビュースコープ

いくつかの一般的な要素と、さまざまなユーザーアクションに基づいて動的にロードおよび含まれる4つの部分を含むJSFページがあります。さまざまなインクルードの機能をカプセル化したBeanがあり、構造は次のようになります。

メインビューページでは、BalusCが次の質問で説明しているように、条件付きでレンダリングされた一連のh:panelGroupsを介して各インクルードが含まれています。

https://stackoverflow.com/a/9897016/945403

https://stackoverflow.com/a/7113961/945403

ビュースコープBeanには、ユーザーのアクティビティの現在の状態、ユーザーが現在表示しているアイテムなどに関するさまざまなビュー情報が含まれています。

含まれている各ビューは、ajax投稿と非ajax投稿の両方を介してさまざまなタスクを実行します。私の問題は、特定のパネルでの特定のアクションによってビュースコープが破壊されているように見え、韻や理由がないように見えることです。以下に概説する複雑なワークフローについては、事前にお詫び申し上げますが、できる限り明確にするよう努めます。

include3.xhtmlでajaxアクションを実行すると、コンポーネントはインクルード内でのみレンダリングされ、1日中実行でき、ビュースコープは残ります。ajax以外の投稿を実行すると、更新によってinclude4.xhtmlが更新されます(以前にレンダリングされなかったものが追加される可能性があります)。その後、他のインクルードのいずれかでアクションを実行できます。

include1.xhtmlでajaxアクションを実行すると、それ自体のバッキングBeanのメソッドのみが呼び出され、独自のコンポーネントのみが更新されますが、ビュースコープは残ります。include3Beanのメソッドを呼び出してinclude2.xhtmlとinclude3.xhtmlを含むdivを更新するajaxアクションを実行すると、ビュースコープは残り、include1.xhtmlでアクションを実行し続ける限り、ビュースコープは残ります。他のインクルードの1つで別のアクションを実行しようとすると、ビュースコープが破棄されます。

この時点で、問題は、アクションが呼び出されているのとは異なるインクルードを更新していることにあるに違いないと思いました。しかし、これから説明するように、これが問題(または少なくとも唯一の問題)ではないようです。

include2.xhtmlにはajaxアクションがあり、起動すると、mainViewBackingのメソッドを呼び出し、include2.xhtmlとinclude3.xhtmlを含むdivを更新します。このアクションを引き続き実行するか、include2.xhtmlで他のアクション(非ajaxアクションを含む)を実行すると、すべてが期待どおりに機能し、ビュースコープは残ります。ただし、その後include3.xhtmlでアクションを実行すると、ビュースコープが破棄されます。これがおかしくなるのは、include1.xhtmlでアクションを実行でき、必要な限りビュースコープにアクセスし続けることですが、戻ってinclude2.xhtmlまたはinclude3でアクションを実行しようとすると。 xhtml、ビュースコープが再び失われます。

私はこの時点で少し立ち往生していて、何が悪いのかを理解する方法さえわかりません。インクルードを更新(および削除または追加)すると、ビュースコープが失われると思いますが、以前にリンクされた質問から、UIの実際のsrc値として、これは問題ではないようです。 :includesは動的に生成されていません。そして、mainview.xhtmlの部分的な状態保存をオフにしています。

これらの動的に表示されるui:includesについて、ビュースコープを壊す何かがありますか?

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

jsf - 管理対象Beanのui:param値にアクセスする方法

この質問はよく聞かれますが、正解はなかったので、もう一度質問することにしました。だから私がこれを持っているなら:私が入っていて私がいるA.xhtmlなら

だからB.xhtml、私はこれを行うことができます

実行するA.xhtmlawesome Id、画面に印刷されます。formIdただし、バッキングBeanの値にアクセスするにはどうすればよいですか。中を見るFacesContext.getCurrentInstance().getAttributes()FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()、見つけられないようです。もう少し先に進むために、私は試してみます:

B.xhtmlに、私は今持っています

formIdアイデアは、RequestParameterMapアンダーキーのの値にアクセスできるということですhiddenFormId。しかし今私が持っている場合:

次に、POSTリクエストの内部を見ると、このエラーが発生します(chromeまたはffデバッグモードの場合)

<partial-response><error><error-name>class javax.faces.component.UpdateModelException</error-name><error-message><![CDATA[/B.xhtml @9,61 value="${formId}": /index.xhtml @27,61 value="awesome Id": Illegal Syntax for Set Operation]]></error-message></error></partial-response>

では、マネージドBeanのui:param値にアクセスするにはどうすればよいですか?

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

jsf-2 - ui:include コードで AutoComplete が nullpointer をスローする

コードで PrimeFaces autoComplete ボックスを使用しています。このコンポーネントをアプリケーションのさまざまな場所で問題なく使用しました。ui:include を介して動的にインクルードされるコードのブロックにそれを含めると、次のようになります。

正確なコードをコピーして、ui:include の直前の親に貼り付けると、そこで機能します。したがって、明らかに問題は、それが ui:include にあることに関係しています。インクルード内の ajax コントロールに問題はありますか? これを回避するには何が必要ですか?

私の環境はPF3.4RC1、JBoss7.1、Mojarra 2.1.5です

更新: これが私が使用しているコードです。そのコードにブレークポイントを配置し、「作業中の」オートコンプリートを使用するときにのみ触れられるため、バッキング Bean を含めることを気にしませんでした。追加情報として、フラグメントにコマンドボタンを配置しようとしましたが、バッキング Bean で actionlistener メソッドを呼び出すこともできません。

メイン (親) ページ:

含まれるフラグメント:

残念ながら、スタック トレースに表示されるのは上記のエラーだけです。完全を期すために、前の行をいくつか示します。トレースでオートコンプリート ボックスに 2 回入力しましたが、入力したときに何がログに記録されたかを見ることができます。

更新 2: 私の意図は、ユーザーがボタンをクリックすると、画面のセクションを動的に入れ替えることです。テストとして、バッキング Bean の作成時に問題のフラグメント (SpecSheet) をデフォルトに設定しました。これを行うと、そのフラグメントに対してオートコンプリートが機能します。オートコンプリートを使用して別のフラグメント (BOM) に切り替えると、それが機能しません。SpecSheet に戻しても、そのオートコンプリートは引き続き機能します。

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

ajax - 動的 ajax ナビゲーション

アプリケーションでナビゲートし、さまざまな facelet ページを動的に含めたいとします。次のような commandLink があります。

ここに facelet を含めます。

ナビゲーション クラス:

同様の例を見たことがありますが、これはもちろん機能しません。タグ ハンドラーと同様ui:includeに、ナビゲーション リスナーが呼び出されるずっと前にインクルードが発生します。新しい facelet ではなく、古い facelet が含まれています。これまでのところ、私はそれを理解しています。

頭痛の部分に移りましょう: actionListener に基づいて facelet を動的に含めるにはどうすればよいでしょうか? facelet を preRender イベントに含めようとし、RENDER_RESPONSE の前に phaseListener を含めようとしました。どちらも機能しますが、イベント リスナーでは、他の preRender イベントを含む facelet を含めることはできません。また、phaseListener では、含まれている facelet で数回クリックした後に重複した ID を取得します。ただし、コンポーネント ツリーを調べると、重複するコンポーネントはまったくないことがわかります。たぶん、これらの2つのアイデアはまったく良くありませんでした..

ui:includeを含むページ、または facelet を含む Java クラスが、含まれるページや正確なパスを知る必要がないソリューションが必要です。以前にこの問題を解決した人はいますか? どうすればいいですか?


JSF 2.1 と Mojarra 2.1.15 を使用しています


問題を再現するために必要なのは、次の Bean だけです。

これはあなたのインデックスファイルにあります:

そして、これはtext.xhtmlにあります

次のようなエラーを生成するのに十分です。

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

jsf - JSFsrc は dynamic で、primefaces です

一種の CMS プロジェクトで JSF 2.1 と Primefaces を使用してページを動的に生成しようとしている問題に苦しんでいます。私の問題は、カスタム ResourceResolver を使用してデータベースに存在するページを動的に含めようとしていることです (その部分はうまく機能します)。問題は、リクエスト パラメータを使用してどのページを提供するかを決定していることです (例: http://xxx.xxx.com/context/public/?p=2 )。これは、Ajax またはより具体的には Primefaces (私の場合は、actionListeners を使用する必要があるスケジュール コンポーネント) を使用するまでは問題なく機能します。おそらくそれがリクエストスコープであるという事実のために、ajaxリクエストが行われたときに私のビューが解決されないことがわかりました。以下は少しのコードです:

ビューの数は不明であり、動的に作成されるため、ui:includes の醜いブロックを作成して条件付きでレンダリングすることはできません。

したがって、私が見ているのは、これを行っているときに ajax ベースのフォーム (たとえば p:commandButton を使用) が機能していないことです。Bean で実行されたアクションが表示されません。しかし、「#{publicBean.view}」から返されるビューをハードコーディングすると、常に同じビューが返され、すべてが機能します。したがって、ajax 呼び出し中に publicBean.view がおそらく null を返すか、私の場合は AgoraConstants.CUSTOM_VIEW_NOT_FOUND を返すと想定しています。これが私のバッキング Bean のコードです。

これが私の質問です。リクエストパラメーターを回避して、ajaxとprimefacesでこれを希望どおりに機能させるにはどうすればよいですか? セッションでそれをスローすることもできますが、ユーザーが異なるビューを持つ 2 つのタブでサイトを開くと、混乱して正しく機能しなくなる可能性があります。基本的に、getView() が ajax リクエストに対して同じビューを返すことを確認できるように、リクエスト変数を保持するにはどうすればよいですか? この問題には簡単な解決策があるはずですが、助けていただければ幸いです。

** 編集 **

また、バッキング Bean をビュー スコープ (リクエストから) に変更しようとしましたが、それは役に立たなかったようです (理由はわかりません)。以下は、バッキング Bean コードの詳細です。@PostConstruct で Bean が作成されたときに呼び出される init メソッドを追加しました。