我需要通過POST在一個新窗口中打開一個JSF頁面,單擊一個<h:commandButton>
。我知道我可以使用JavaScript實現這一目標。但我想用JSF而不是JavaScript來實現這一點。使用h打開新窗口使用h:commandButton
我該如何做到這一點?我正在使用JSF 2.0。
我需要通過POST在一個新窗口中打開一個JSF頁面,單擊一個<h:commandButton>
。我知道我可以使用JavaScript實現這一目標。但我想用JSF而不是JavaScript來實現這一點。使用h打開新窗口使用h:commandButton
我該如何做到這一點?我正在使用JSF 2.0。
唯一的非JS方法是在父<h:form>
中設置target="_blank"
。
<h:form target="_blank">
...
<h:commandButton value="Open in new Window" />
</h:form>
但是這會影響這是在非常相同的形式進行的所有非Ajax(!)的行動。所以如果你很聰明,就不應該在新窗口中打開一個Ajax動作。然而,ajax也是JavaScript,你提到你不想使用JS(我希望你一旦發現PrimeFaces實際上充滿了JavaScript)不會感到震驚。
如果您絕對需要將其限制爲單個操作,那麼您實際上無法到處尋求JavaScript的幫助。
<h:form>
...
<h:commandButton value="Open in new Window" onclick="this.form.target='_blank'" />
</h:form>
當您將目標僅限制爲單個動作時,可能需要將表單轉換爲初始狀態。 通過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 2013-03-27 12:27:53
必須是一個窗口?或者它可以成爲一個新標籤? – Damian 2012-07-23 11:49:50
新標籤也很好。當您點擊命令按鈕時,我想要在新選項卡中打開頁面。 – vr3w3c9 2012-07-23 11:51:43
在一個commandLink中,你實現了這個添加target =「_ blank」,但是我認爲沒有辦法在沒有javascript的commandButton中做到這一點。 – Damian 2012-07-23 11:56:23