2011-01-24 16 views
6

WebアプリケーションのA4J Richfacesを使用して、ユーザーが<a4j:commandButton>をクリックしたときに新しいブラウザウィンドウを開く必要があります。a4j:commandButtonで新しいウィンドウを開く

私はwindow.open(URL, ...)を使用する必要があると思います。どこに置くべきですか?

マイ<a4j:commandButton>は次のようになります。

<a4j:commandButton id="elementDetailsButton" 
    onclick="if (!confirm('Are you sure? Unsaved data will be lost')) { return false; }" 
    action="#{myBean.elementDetailsAction}" 
    value="Element Details"> 
    <a4j:actionparam name="elementDetailsString" 
     value="getElementDetails()" 
     assignTo="#{myBean.elementDetails}" noEscape="true"> 
    </a4j:actionparam> 
</a4j:commandButton> 

答えて

5

あなたが "エルス" window.openなくreturn false

<a4j:commandButton id="elementDetailsButton" 
    onclick="if (confirm('Are you sure? Unsaved data will be lost')) { window.open(URL, ...) } else { return false }" (...) /> 

を確認することができますが、多分、必要オプションではありません。

それとも、フォームのターゲットを変更することができます..私は非常によく、その正しい構文であれば覚えていけない...

<a4j:commandButton id="elementDetailsButton" onclick="this.form.taget='_blank'" (...) /> 

...またはそのような何か。

フォームターゲットを変更するとすばらしい問題が発生します。あなたの残りのアプリケーションは、新しいウィンドウを対象とします。この問題を解決するために、<h:commandLink/>を作成してウィンドウを閉じ(modalPanel)、フォームターゲットをリセットします。

<iframe/>を使用して、<rich:modalPanel/>の中の.pdfレポートを開くには、これを使用していました(ターゲットトリック)。私はあなたが、確認を求めるアクションを実行すると、新しいウィンドウを右に開くようにしたいあなたのコマンドボタンから見ることができるように

しかし、フォームのターゲットはあなたの問題のために有用であろう変更した場合、私はわからない。..

2

?私はボタンが非常に多くのアクションを処理できるかどうかは完全には分かりませんが、ロードする設定を使用してロードするページにアクションを割り当てることができ、コマンドボタンがウィンドウを開くのと同じようにRenanは提案した。