問題タブ [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 - UIViewParameter からコンバーター属性式を取得する
JSFにソリューションが組み込まれていないview-param用の依存コンバーターを作成する必要があります。
この例bar
では に依存していfoo
ます。
@PostConstruct
の変換された値はbean.foo
まだ利用できませんが、リクエスト パラメータbar
を手動で取得し、 Converter
el ルックアップを実行することができました。
を解決してコンバーターを取得しようとしましたUIViewParameter
が、JSF ライフサイクルによってまだ設定されていないため、そのコンバーター インスタンスは nullです (なぜ? コンバーターの範囲が広い場合は安全なはずです)。したがって、コンバーターをルックアップして次のようなことを行うためのel式を取得したい(上記のDRYのようにハードコードする必要性を減らすため) :
UIViewParameter
JSF は、各コンバーターのインスタンス化の後に呼び出される反復ライフサイクル Bean イベントなど、依存コンバーターのサポートを処理する必要があります。
jsf - myfaces 2.1.17 - f:viewParam セッターがコマンドで呼び出されるlink
JSF2.0では、commandlinkが押された(投稿された)とき、f:viewParamセッターを再度呼び出す必要がありますか? myfaces 2.0 では、viewParam セッターを再度呼び出しませんが、myfaces 2.1 では呼び出します。これは正しいです?グローバルに無効にする方法はありますか?
jsf - includeViewParams=true の ExternalContext#redirect()
次のように、文字列の形式で通貨のリストを使用します。
に沿って<p:remoteCommand>
。
通貨値を設定するマネージド Bean が、上記を介して<p:remoteCommand>
JavaScript 関数にパラメーターとして渡されます。
提供された通貨の値は、上記CurrencyRateBean
のアクション メソッド内から別のセッション スコープのマネージド Bean に設定され、最終的に現在の値にcurrencyAction()
基づいてリダイレクトを行います。viewId
includeViewParams=true
#{currencyRateBean.currencies}
ここで、これまで文字列のリストであった複合オブジェクトのリストを持つように変更された場合、話は変わります。
次のシナリオは機能しませんが、includeViewParams=true
これは重要です。
includeViewParams=true
装飾用にのみ追加されています。うまくいきません。
listener
inは、 of<p:ajax>
のようにナビゲーション ケースの結果に基づいてリダイレクトを行うことができないため、とにかく使用する必要があります。action
<p|h:commandXxx>
ExternalContext#redirect()
<p:remoteCommand>
の完了時に使用できます<p:ajax>
が、これにはサーバーへの不必要な 2 回の往復が含まれます。最初に関連付けられたマネージド Bean に通貨値を設定し、次にリダイレクトを行います。
与えられた例でリダイレクトを行う方法はincludeViewParams=true
?
jsf-2 - @RequestScoped Beanのビューに含まれるフォームが原因で発生した検証の失敗にビューパラメータを存続させるにはどうすればよいですか?
index.xhtml:
結果.xhtml:
マネージドBean:
打った時http://localhost:8080/Leonard/faces/ch2/index.xhtml?playernameparam=FARHAN&playersurnameparam=ANSARI
検証の失敗をトリガーするために、[検証目的] フィールドを空白のままにします。
そしてプレスボタンを押します。
次に、同じフィールドに何かを入力して、もう一度 Enter キーを押します。
それは完全に正常に機能し、ビューパラメーターがあり、リダイレクトされた URL は次のように反映されます。
もちろん豆のままです@ViewScoped
。
しかし、私の Bean は @RequestScoped であり、これが問題を引き起こしています。検証エラーが発生したときにそれらを失い、その後、POST リクエストでその検証エラーを削除した後に POST を実行すると、次の結果が得られました。
質問は、リクエスト パラメータをどのように保持するかということになります。
validation - 次の場合に HTTP 400 エラーを送信します。@NotNull プロパティで失敗しました
データを表示するために GET パラメータを必要とする JSF 2.2 ページを作成していますが、そのパラメータを適用するのが困難です。
また、 Omnifaces の viewParamを使用しようとしましたが、成功しませんでした。もう何を試したらよいかわかりません。
このリンクでも同様の問題が見つかり、すべての提案を試しました...
私が開いたとき:
http://url-to/required-test.xhtml?test=foo
正常に動作し、Param is: foo
表示されます。
しかし、私が開いたとき:
http://url-to/required-test.xhtml?test=
http://url-to/required-test.xhtml
Param is: null!
検証エラー メッセージの代わりに表示されます。そしてnull!
、このテスト専用の特別な outputText を追加したため、表示されるだけです。実際のアプリケーションでは、どこかで NullPointerException が発生します。
required
属性をオン<f:viewParam />
または機能させるにはどうすればよい<o:viewParam />
ですか?
私のテストコード:
必須-test.xhtml
必須TestBean.java
web.xmlのコンテキスト パラメータ
jsf - f:viewParam が呼び出し元の場合、setter が呼び出される前にプロパティの getter が呼び出されるのはなぜですか?
タイトル悪くてすみません、編集よろしくお願いします。
だから私はこのコードを持っています:
クリックすると、goodbye.xhtmlが表示され、そのコードは次のようになります。
したがって、次のように BlahBlah.java がある場合:
goodbye.xhtmlにtest_one_modifiedが表示されますが、これは問題ありません。
しかし、次のように BlahBlah.java を変更すると:
私が期待しているのは、再びtest_one_modifiedが表示されることですが、代わりに素敵なNull Pointer Exceptionが発生します。
じゃない
BlahBlah.parameterを設定するはずですか?
forms - JSFフォームを送信して値をGETパラメータとして別のページに渡す方法は?
こんにちは、BalusC によるこの回答を見ました。エンティティのマスター詳細ページの作成、それらをリンクする方法、および選択する Bean スコープ
私が探しているのは、入力値をリクエスト GET パラメータとして渡す方法です。次のような検索フォームを持つ page1 があるとします。
そして、次のように人物のデータを表示する 2 番目のページ (page2) を用意します。
私の質問は、page1 からの入力値を GET リクエスト パラメータとして page2 に渡す方法です。前もって感謝します。私の英語でごめんなさい:)
jsf - ビュー スコープの Bean にリクエスト パラメータを挿入する (異なるポートレット)
ポートレット A 内の最初のビューとポートレット B 内の 2 番目のビュー (同じ .war 内の両方のポートレット) の 2 つのビューを通信しようとしています。そのために、JSF の「f:viewParam」機能と「f:param」機能を使用して、(ポートレット A ビューから) プロパティをリクエスト オブジェクトに注入することにしました。リクエスト オブジェクトから取得し、そのプロパティ値をビュー スコープのバッキング Bean プロパティに渡します。
Portlet-A ビュー コード:
JS コード:
ポートレット B のビューは、ポートレット A のビューが表示されるページとは異なる、Liferay ベースのページに表示する必要があることに注意してください。
ポートレット B ビュー コード:
portlet-B が表示されると、ブラウザーのアドレス フィールドは「http://host:8080/viewer」に設定され、タグは「0」(ゼロ) としてレンダリングされます。
目標とするタスクを実行している方法が正しいかどうかはわかりません。しかし、もしそうなら、なぜそれが機能しないのかわかりません。ですから、助けやコメントをいただければ幸いです。前もって感謝します。