<h:commandButton>
のクリックでPOSTによって新しいウィンドウでJSFページを開く必要があります。私はJavaScriptを使用してこれを達成できることを知っています。しかし、私はJSFではなくJavaScriptを使用してこれを実現したいと思います。h:commandButtonを使用してPOSTで新しいウィンドウを開く
どうすればこの問題を解決できますか?私はJSF 2.0を使用しています。
<h:commandButton>
のクリックでPOSTによって新しいウィンドウでJSFページを開く必要があります。私はJavaScriptを使用してこれを達成できることを知っています。しかし、私はJSFではなくJavaScriptを使用してこれを実現したいと思います。h:commandButtonを使用してPOSTで新しいウィンドウを開く
どうすればこの問題を解決できますか?私はJSF 2.0を使用しています。
唯一のJS以外の方法は、target="_blank"
を親の<h:form>
に設定することです。
<h:form target="_blank">
...
<h:commandButton value="Open in new Window" />
</h:form>
しかし、これは非常に同じ形で行われているすべての非アヤックス(!)アクションを影響します。あなたがスマートならば、新しいウィンドウで開くべきではないアクションをajaxアクションにしてください。しかし、ajaxもJavaScriptであり、あなたはJSを使いたくないと言いました(PrimeFacesが実際にJavaScriptでいっぱいであることを知った後は驚かないことを願っています)。
これを1つのアクションに制限する必要がある場合は、JavaScriptにほとんど助けを借りることができません。
ターゲットを1つのアクションだけに制限すると、初期状態でフォームを取得したいことがあります。 oncklickアクションを使用すると、フォームのターゲットを_blanページに設定します。 クリックすると、ページが新しいタブ/ページで開かれます(アクションイベントがトリガーされます)。 最後に、onblurアクションがトリガされ、フォームを初期状態に再設定します(残りのボタンは_selfページで開きます) このコードでは、ah:commandbuttonのみを新しいページで開くように制限できます。 残りのボタンは、セルフページで開かれます:
<h:commandButton
onclick="this.form.target='_blank'"
onblur="this.form.target='_self'"
id="listadoRebuts"
action="#{giaquaBusquedaCorte.abrirListadoRebuts}"
value="#{msg.seqVisorbtnRecibos}">
</h:commandButton>
質問から:* "私はjavascriptを使用してこれを達成することができますが、JSFコードを使用し、JavaScriptを使用しないでこれを達成したいと思います。" * – BalusC
はウィンドウでなければなりませんか?それとも新しいタブにすることができますか? – Damian
新しいタブも正常です。コマンドボタンをクリックすると、新しいタブでページを開くことができます。 – vr3w3c9
をcommandLinkに追加すると、target = "_ blank"を追加することができますが、javascriptなしでcommandButtonでこれを行う方法はないと思います。 – Damian