2016-09-19 2 views
0

primefaceでコマンドリンクを使用してJSFアプリケーションの複数のページを開きたいとします。バッキングビーンを使ってこれを行う方法はありますか?私は別のモニターにページを表示する必要があるので、同時に開く必要があります。各ページには同じ間隔の<p:poll />タグがあり、私の目標はUIを同時に更新するように見せることです。JSFを使って複数のURL /リンクを別々のウィンドウで一度に開く方法は?

<p:link outcome="/admin/page1"> 
     <span class="ui-button-text">page1</span> 
</p:link> 
<p:link outcome="/admin/page2"> 
     <span class="ui-button-text">page2</span> 
</p:link> 
<p:commandButton actionListener="#{someBean.openLinks}" /> 
+0

@Kukeltje Can 複数のリンクを同時に開くことはできますか? –

+0

いいえ、そうではありません。しかし、他のリンクをクリックする 'onclick'ハンドラを追加することができます。プレーンHTMLを使用する場合と同じようにJavaScriptを使用します。 –

答えて

1

ボタンのアクションが完了したときに、私はリンクを「クリック」するためにJavaScriptを使用してクライアント側でこれを解決するだろう。利点は、あなたが必要なものを処理するためにボタンを使用することができ、ユーザーがそれらをクリックした場合に通常どおりにリンクが処理されることです。新しいウィンドウでリンクを開くには、targetを追加します(普通の平文HTML a hrefが受け入れるすべての値を受け入れます)。だから、私は示唆している:私はちょうど、リンクを検査するには、ブラウザのデバッグツールを使用して、あなたが使用している名前付けコンテナを知らない

function openLinks(){ 
    document.getElementById("myForm:myLink1").click(); 
    document.getElementById("myForm:myLink2").click(); 
} 

<p:link id="myLink1" outcome="/admin/page1" target="target1"> 
     <span class="ui-button-text">page1</span> 
</p:link> 
<p:link id="myLink2" outcome="/admin/page2" target="target2"> 
     <span class="ui-button-text">page2</span> 
</p:link> 
<p:commandButton action="#{someBean.yourAction}" 
       oncomplete="openLinks()" /> 

をあなたはJavaScript関数openLinksを追加する必要があります実際のidを見つけます。 j_idtXxxがある場合は、対応する命名コンテナにidを設定してください。

JSFは、常にクライアント側でHTML(JavaScriptとCSS)を生成します。多くの場合、同じプレーンhtmlソリューションをそれらに適用できます(openLinks JavaScript関数は、JSFなしのプレーンhtmlソリューションと同じです)。

1

、このコマンドラインを使用すると、管理対象Beanからリンクを開くことができます:

RequestContext.getCurrentInstance().execute("window.open('" + url + "')"); 
関連する問題