私はPrimefaces 3.0を使用しています。下図のように私は、単一のselectionModeとのデータテーブルを持っている:onRowSelectの別のページにナビゲートする方法
<p:dataTable id="paySumm" var="PSummRow"
value="#{beanPySummary.PySummariesModel}"
selection="#{beanPySummary.selectedPySummary}" selectionMode="single" paginator="true"
rows="15" paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink}
{CurrentPageReport} {NextPageLink}" rowsPerPageTemplate="10,15,25,35" >
<p:ajax event="rowSelect" listener="#{beanPySummary.onRowSelect}" />
私は方法onRowSelectにいくつかのビジネスロジックを持っているし、私は別のページに移動します。
public String onRowSelect(SelectEvent event) {
......
ConfigurableNavigationHandler configurableNavigationHandler =
getCurrentInstance().getApplication().getNavigationHandler();
configurableNavigationHandler.performNavigation("MoreDetail?faces-redirect=true
return "";
私は、includeViewParamを使用してMoreDeatilsにパラメータとして渡したいデータがあります。 MoreDeatils.xhtmlのf:ViewParamとして定義することができます。私はManagedPropertyアノテーションを使用する必要があるかどうか、そして同時にそれらのパラメータをデータテーブルページの隠しフィールドとして定義するかどうかはわかりません。私は助言と指示が必要です。
おかげで、 ピーター
ありがとうございましたBalucsC。あなたは私の質問に答えるだけでなく、痛みを抱き、他の人を助けるために偉大な人です。はい、私はonRowSelectメソッドでvoidを持っていましたが、私はそれがコンストラクタを2度呼び出すことに気付いていました。そこで、リターンパラメータとしてStringを追加し、そのように動作しなくなりました。私はなぜそれがひっくり返っているのか分かりませんし、どうして私がデバッグモードでそれをobserevedしたので、なぜそれがコンストラクタを2度呼び出すのか分かりません。私はあなたが説明できると確信しています。どうもありがとうございます。 – Peter
こんにちはBalusC、私の無知で負担してください。私はどのように私のコードをコメントで送るのか分からないので、ここで説明しようとしています。 onRowSelectメソッドには、そのページを読み込むのではなく、MoreDetails用のファイルダウンロードダイアログボックスが開きますが、すべてがうまく動作します。あなたが望むなら私は新しい投稿の下に私のコードを投稿することができます。また、私はまだ私のMoreDeatl xhtmlにf ViewParmが必要ですか?ありがとう。 – Peter
私の答えの例では、 '* .xhtml'のURLパターンに' FacesServlet'をマップしたと仮定しています。 '* .jsf'のような別のURLパターンにマップした場合は、それに応じてリダイレクトURLを変更する必要があります。例えば。 'MoreDetail.xhtml'の代わりに' MoreDetai.jsf'(あるいは、URLパターンを '* .xhtml'に変更することで、仮想URLを習得する必要はありません)。 – BalusC