問題タブ [viewparams]
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.
jsf - JSF f:viewParamがtemplate.xhtmlにある場合、setterを呼び出さない
おそらく誰かが私を啓発することができます。
入れたら
テンプレート内、セッター
呼び出されることはありません。つまり、preRenderメソッド'call()'は、事前にsetterを呼び出さずに呼び出されます(以下のコード例を参照してください)。ただし、メタデータブロックをコンポジション内に配置すると、期待どおりに呼び出されます。
これは正常な動作ですか、それとも私は何か間違ったことをしていますか?
洞察をありがとうございました。
ハンスペッター
参考までに、動作していないバージョンの完全なコード例を次に示します。
testtemplate.xhtml
testcomposition.xhtml
そしてここに、作業バージョンの完全なコード例があります。
testtemplate.xhtml
testcomposition.xhtml
jsf-2 - リクエストパラメータでナビゲートする方法は?
あるページから別のページに移動したい、たとえば from page1
with withbean1
とpage2
しbean2
ます。bean1
からにいくつかのパラメーターを渡す必要がありますbean2
。
@ManagedProperty
for parameters と<f:viewParam>
in <f:metadata>
part of の使用方法を理解したいと思いますpage2
。たとえば、ゲッターとセッターで と をfield1
使用field2
できfield3
ます。私の理解では、次のメタデータでビュー パラメーターを定義する必要があります。bean1
bean2
page2
お気に入り
@ManagedProperty
パラメータfield1
、field2
and field3
、bean1
またはを定義するために注釈を使用する場所がわかりませんbean2
。
私page1
は使用することができます"page2?faces-redirect=true&includeViewParams=true"
コマンドリンクの送信への応答など、の代わりにメソッドの1つで同じものを使用できますpage1
か?
page1
これら 3 つのフィールドが と の両方に必要な場合page2
、これらの隠しフィールドを定義できますか?
java - viewParam は @RequestScoped Bean および ajax イベントで機能しませんか?
stackoverflow でいくつかの質問と回答を読んだ後 (このViewParam vs @ManagedProperty(value = "#{param.id}")のように)、 Bean および ajax イベントで使用viewParam
する可能性についてはわかりません。@RequestScoped
@BalusCの回答でわかるように:
@RequestScoped Bean で使用できますが、必要な場合は Bean が @ViewScoped である必要があります。
f:viewParam
ビーンで使用すると@RequestScoped
同時に、検証が失敗した後もビューパラメーターを保持することは可能だと思います。つまり、@ViewScoped
ビーンはまったく必要ありません。
おそらく@ViewScoped
bean を使用する必要性は、この仕様の問題と関係があるのではないでしょうか?
http://java.net/jira/browse/JAVASERVERFACES-1532
その問題によると、ソリューションは JSF 2.2 でのみ利用可能になります。
jsf-2 - JSF Bean:ViewParamが設定された後に@PostConstruct関数を呼び出します
product.xhtmlとProductBeanがあります。/ product / {id}を使用して製品にアクセスするため、product.xhtmlにvalue=ProductBean.idのviewParamがあります。問題は、Bean内で、製品の詳細を入力するためにPostConstructアノテーションを指定したinit関数を使用することです。これを行うには、外部関数を呼び出すためのIDが必要です。viewParamがBeanのIDを設定する前にinitが呼び出されるので、initの内部では、idがまだ設定されていないため、外部関数を呼び出すことができないと思います。私は何を間違っているのですか、そしてこれをどのように修正しますか?
アップデート
何が悪かったのかわかりました。viewParamメソッドはCDIBeanで機能すると思いますが、ManagedPropertyメソッドはJSFBeanで機能します。
もう1つ問題があります。私のCDIBeanはRequestScopedであり、product.xhtmlがレンダリングされると、Beanが作成され、後で破棄されると思います。面白いことに、そのBean内に関数があり、呼び出すとid(view paramに接続されているために発生すると思います)を読み取ることができますが、他のプロパティは読み取ることができません。これを修正する方法はありますか?
jsf-2 - 投稿後のJSFでのビューパラメータの処理
動作するためにuserIdが必要なページがいくつかあるため、次のコードがあります。
userpage.xhtml
userPageController.java
ただし、doActionが呼び出されると、URLのビューパラメータは表示されなくなります。Beanは、そのビュースコープの性質のために引き続き機能しますが、将来のナビゲーションの試みを台無しにします。検索すると、投稿後にviewパラメーターを残して、userpage.jsf?userId = 123と表示されているように見えますが、そうではありません。本当に意図された振る舞いは何ですか?
これに関連して、userIdを保持したい別のページに移動するときに、ビューパラメータの自動追加を実装しようとしました。他の人にとってはうまくいくようですが、私にとっては、ViewRootのuserIdは常にnullです。以下のコードは、viewparameterを取得するために使用されます(一時的に保存されたuserIdをナビゲーションに使用できることはわかっていますが、このソリューションの方がはるかに優れています)。
最後に考えたのは、setterメソッドはまだ機能しているようで、postでsetUserIdが正しい値で呼び出されるということです。
ビューパラメータがどのように機能するかを完全に誤解しましたか、それともここに何らかのバグがありますか?私のユースケースは非常に一般的であり、フレームワークで基本的なサポートが必要だと思います。
java - 2 番目の ajax リクエストを呼び出すと、f:viewParam と Converter および ViewScoped の例外が発生する
これf:viewParam
をバインドして検証して auserId
をに変換しようとすると、予期しない結果Player
が得られました。
私のコンバーターはこのように見えます
3 つのリンク (Harry、Tom、Peter) をクリックすると、コンバーターがうまく機能します。ID を変換player
し、マネージド Bean にバインドします。次に、テキストボックスに何かを入力してクリックします。最初は正常に機能し、入力した内容がボタンの横に表示されますが、入力内容を変更してもう一度Switch
クリックすると、エラーメッセージが表示されます。これはエラーメッセージですのために。f:viewParam を取り出した場合、すべて正常に動作します。驚いたことに、f:viewParam から o:viewParam (OmniFaces) に切り替えると、うまく機能します。Switch
Bad Request. Please use a link from within the system
required
f:viewParam
jsf-2 - URL にパラメーターがない場合は、f:viewParam プロパティを null に設定します。
1 つのパラメーターを受け入れる単純なページがあるとします。
ユーザーが に移動するhttp://localhost/myapp/?name=Joe
と、#{bean.name}
が に設定されJoe
ます。次に、ユーザーがhttp://localhost/myapp/
またはhttp://localhost/myapp/?something=Else
に移動した場合、#{bean.name}
は引き続き に設定されJoe
ますが、 にしたいと思いますnull
。これはどのように行うことができますか?
jsf - 他のフィールドの前にinputHiddenからidがロードされたエンティティBeanにリクエスト値を適用する
私は次のファセットテンプレートを持っています:
およびリクエストスコープのBean:
最初のページの読み込みは適切に機能し、エンティティが読み込まれてフォームに表示され、inputHiddenがエンティティIDに設定されます。問題は、送信スローです。
おそらく、getUserがsetIdの前に呼び出されたためです。どうすればこれを解決できますか?私は本当にリクエストスコープのBeanが欲しいのですが、これは少なくともviewaccessスコープのBeanで簡単に解決できることを知っています。
編集:プロセス検証フェーズで例外がスローされることに気づきました。最初は、モデル値の更新フェーズで例外がスローされると思いました。「privateUser」を「privateUseruser= new User()」に変更しましたが、今は大丈夫ですが、少し変な感じがします。
よろしく、パベル
jsf - f:param および f:viewparam セッターが呼び出されない
f:param を使用した出力リンクがある xhtml ページがあります。
<h:outputLink value="#{formService.getStartFormData(v_process.id).formKey}">
Start
<f:param name="processDefinitionKey" value="#{v_process.key}"></f:param>
</h:outputLink>
ターゲットページには、ビューパラメータがあります
私の豆は
processDefinitionKey が null です。セッターが呼び出されていません。何が問題なのですか? 追加する web.xml または faces-config.xml に構成はありますか? 同じプロジェクトで、私はプライムフェイスとスプリングセキュリティを使用しています
これが全ページです
返信ありがとうございます。うまくいきませんでした。
ajax - 動的に含まれるページ フォームの最初の送信が失敗する
動的に含まれるページで奇妙な動作が発生しました
私の最初のページには、含めるさまざまなページから選択するコンボがあります。
AnyPageBean は、次の 2 つのページのいずれかを返すだけです: pilotNoTemplate.xhtml または pipe.xhtml
そのページ (pipo ページも) を選択すると、pilotNoTemplate.xhtml が正しく表示されます。
しかし、pilotNoTemplate.xhtml からフォームを送信すると、JSF はその送信を問題のない POST と見なしますが、Phase1 と Phase 6 だけがスパンされているのはなぜですか? フェーズを示す PhaseListener があり、次のように出力されます。
フォームに何かが入力されている場合、それはリセットされます...
2 番目の送信は問題なく、すべてのフェーズにまたがっています。
私のテンプレートページ:
構成ページ。含めるページを選択できます。
pilotNoTemplate.xhtml ページ:
xhtmlページのすべてのコンポーネントに「id」を与えることに注意しましたが、それがないとそういう問題があるので、私の場合は不十分なようです。何か案が ?
他の人が同じ問題を抱えているのを見てきましたが、解決策は見つかりましたか?