6

WebアプリケーションでA4J、Richfacesを使用して、ユーザーがをクリックしたときに新しいブラウザウィンドウを開く必要があります<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>
4

2 に答える 2

5

確認できますがwindow.openreturn false

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

「Else」はオプションですが、必要ない場合もあります。

または、フォームのターゲットを変更することもできます。構文が正しいかどうかはよく覚えていません。

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

...またはそのようなもの。

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

<rich:modalPanel/>私はこれ(ターゲットトリック)を使用して、を使用して.pdfレポートを内部で開きました<iframe/>

ただし、フォームターゲットの変更が問題に役立つかどうかはわかりません。

于 2011-01-24T18:01:41.137 に答える
2

コマンドボタンからわかるように、確認を求め、アクションを実行して、新しいウィンドウを開きますか?ボタンがこれほど多くのアクションを処理できるかどうかは完全にはわかりませんが、いつでもonload構成を使用して、ロードするページにアクションを割り当て、commanbuttonが確認とウィンドウを開くアクションの両方を処理できるようにすることができます。レナンは提案した。

于 2011-01-27T16:05:23.720 に答える