POST <h:commandButton>
をクリックすると、JSFページを新しいウィンドウで開く必要があります。JavaScriptを使用してこれを達成できることはわかっています。しかし、これを使用して達成したいと思います。 JavaScriptではなくJSF。
どうすればこれを達成できますか? JSF 2.0を使用しています。
JS以外の唯一の方法は、親target="_blank"
に<h:form>
を設定することです。
<h:form target="_blank">
...
<h:commandButton value="Open in new Window" />
</h:form>
ただし、これは、まったく同じ形式で実行されるall non-ajax(!)アクションに影響します。だからあなたが賢いなら、新しいウィンドウで開かないはずのアクションをajaxアクションにしてください。ただし、ajaxもJavaScriptであり、JSを使用したくないとのことです(PrimeFacesが実際にJavaScriptでいっぱいになっていることに気付いたら、ショックを受けないでください)。
絶対に1つのアクションに制限する必要がある場合は、JavaScriptに少しの助けを求めることはできません。
<h:form>
...
<h:commandButton value="Open in new Window" onclick="this.form.target='_blank'" />
</h:form>
ターゲットを単一のアクションのみに制限する場合、フォームを初期状態にしたい場合があります。 oncklickアクションを使用して、フォームのターゲットを_blanページに設定します。クリック後、ページは新しいタブ/ページで開かれます(アクションイベントをトリガーします)。最後に、onblurアクションがトリガーされ、フォームが再び初期状態に設定されます(残りのボタンは_selfページで開きます)このコードを使用すると、h:commandbuttonだけに制限して新しいページで開くことができます。残りのボタンはセルフページで開かれます:
<h:commandButton
onclick="this.form.target='_blank'"
onblur="this.form.target='_self'"
id="listadoRebuts"
action="#{giaquaBusquedaCorte.abrirListadoRebuts}"
value="#{msg.seqVisorbtnRecibos}">
</h:commandButton>