Primefaces commandButton和ajax

时间:2013-01-06 10:31:11

标签: ajax primefaces

我使用带有许多标签的tabView组件。在其中许多内容中,我form由primefaces commandButton组件提交。

默认情况下,PF commandButton使用ajax模式,但是当我提交表单时,我的页面似乎已完全加载,我的tabView组件丢失了索引视图(索引0已呈现)。

这是正常的行为吗?

我虽然我会留在同一个索引,因为它是ajax ......

2 个答案:

答案 0 :(得分:1)

看起来有一些命名容器(可能是p:tabView),您最好为其分配id,因此不要像j_idt16这样的前缀(可能会不时变化) )您将获得myTab0myTab1等前缀...

例如<p:tabView id="myTab"

在安全方面你可以做的另一件事是在尝试用jquery选择它之前检查元素是否存在并访问它的值,如下所示

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

答案 1 :(得分:0)

好的,我的问题是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()}"/>