[英]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.