簡體   English   中英

使用p:commandButton導航時在f:viewAction中調用動作

[英]Invoke action in f:viewAction while navigating using p:commandButton

home.xhtml

<p:button outcome="product" value="Login Simple Button"/>
<p:commandButton value="Login" action="#{homeController.validate}" update="logindialog"/>

product.xhtml

<f:metadata> <f:viewAction action="#{productController.readProductGroup}" /> </f:metadata>

簡單的p:button導航並成功調用readProductGroup(); 但是即使homeController.validate()方法返回“ product”並成功導航到product.xhtml,p:commandButton也不會。

使用p:button時,我沒有靈活性來調用服務器方法,使用update屬性等。

我需要的是,能夠在home.xhtml頁面按鈕中使用update,action / actionListener等屬性,並同時導航到product.xhtml時,應該能夠在f下調用productController.readProductGroup函數:頁面加載時的元數據。

請提出建議。

<f:viewAction>設計為在GET請求上運行,而不是在POST請求上運行。 要對POST請求調用操作,您應該使用<h:commandXxx>

如果出於某種原因您確實也想在POST請求上運行<f:viewAction> ,則只需將其onPostback屬性設置為true

<f:viewAction ... onPostback="true" />

另一方面,也很可能您對冪等,導航以及GET與POST不太了解。 通過POST導航被認為是不好的做法。 您可以通過在結果中附加?faces-redirect=true查詢字符串來發送操作中的重定向方法來應用POST-redirect-GET模式。

public void validate() {
    // ...

    return "product?faces-redirect=true";
}

另請參見如何在JSF中導航? 如何使URL反映當前頁面(而不是上一頁)


具體問題無關 ,操作方法名稱給我的印象是,使用JSF驗證程序時,您也不清楚。 在這種情況下,請仔細閱讀actionListener或action method中的JSF 2.0驗證

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM