簡體   English   中英

Primefaces commandButton和Ajax

[英]Primefaces commandButton and ajax

我使用帶有許多標簽的tabView組件。 在其中許多form中,我都有由primefaces commandButton組件提交的表單。

默認情況下,PF commandButton使用ajax模式,但是當我提交表單時,我的頁面似乎已完全加載,我的tabView組件丟失了其索引視圖(呈現索引0)。

請問那是正常的行為嗎?

我雖然會保留在同一索引中,因為它是ajax ...

看起來似乎有一些命名容器(可能是p:tabView ),您最好為其分配一個id ,因此您將獲得myTab0myTab1等前綴,而不是像j_idt16這樣的前綴(可能會不時發生變化)...

例如<p:tabView id="myTab"

為了安全起見,您可以做的另一件事是在嘗試使用jquery選擇元素並訪問其值之前檢查該元素是否存在,如下所示

if($('#j_idt16\\:register_location_choice_2_input').length > 0){
    //some code here
}

好的,我的問題是JS validateRegisterForm函數。 當我刪除它時,它可以工作,但是我需要它...

我用它來檢查是否可以啟動驗證表單。

function validateRegisterForm(){    

if($('#j_idt16\\:register_location_choice_2_input').attr('checked')){

    if($('#j_idt16\\:register_galaxies_input').val() == 0){
        var galaxie = MUST_CHOOSE_GALAXY;
        alert(galaxie.charAt(0).toUpperCase() + galaxie.slice(1));
        return false;
    }

    if($('#j_idt16\\:register_solar_systems_input').val() == 0){
        var ss = MUST_CHOOSE_SOLAR_SYSTEM;
        alert(ss.charAt(0).toUpperCase() + ss.slice(1));
        return false;
    }

    if($('#j_idt16\\:register_positions_input').val() == 0){
        var position = MUST_CHOOSE_POSITION;
        alert(position.charAt(0).toUpperCase() + position.slice(1));
        return false;
    }

}


return true;    

}

那么,如何在發送和允許使用ajax驗證表單之前檢查字段值?

編輯:

好的,我通過在JS函數中啟動驗證並將按鈕type傳遞給button而不submit並使用remoteCommand組件來解決我的問題:

我的JS功能:

function validateRegisterForm(){    

if(...)
      validateForm();

}

和我的remoteCommand

<p:remoteCommand name="validateForm" actionListener="#{login.registerAccount()}"/>

暫無
暫無

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

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