PrimeFacesCommandButton和ajax

PrimeFacesCommandButton和ajax,ajax,primefaces,Ajax,Primefaces,我使用带有许多选项卡的tabView组件。在许多表单中,我有表单,它们由primefacescommandButton组件提交 默认情况下,PFcommandButton使用ajax模式,但当我提交表单时,我的页面似乎已完全加载,并且我的tabView组件丢失了其索引视图(索引0已呈现) 请问这是正常行为吗 我想我会留在同一个索引中,因为它是ajax…好的,我的问题是JSvalidateRegisterForm函数。当我移除它时,它会工作,但我需要它 我用它来检查是否可以启动验证表单 funct

我使用带有许多选项卡的
tabView
组件。在许多表单中,我有
表单
,它们由primefaces
commandButton
组件提交

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

请问这是正常行为吗


我想我会留在同一个索引中,因为它是ajax…

好的,我的问题是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
传递到
按钮
not
submit
并使用
remoteCommand
组件:

我的JS功能:

function validateRegisterForm(){    

if(...)
      validateForm();
}

和我的
远程命令

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

看起来有一些命名容器(
p:tabView
可能),你最好给它分配一个
id
,这样你就可以得到
myTab0
myTab1
等前缀,而不是像
j\u idt16
这样的前缀


例如
你的标签索引应该保持不变。。。看看你的浏览器控制台有没有js错误。。。这可能会导致整个页面重新加载。。。另外,如果您使用firebug,我不会显示JS错误。我的commandButton代码是这样的:
好的,当我创建新选项卡并用非常基本的表单和PF commandButton填充它时,我保留了正确的索引,因此可能是表单中的嵌套组件在重新加载时强制更改索引。我将检查我的代码问题;)看看这个“?”
if($('#j_idt16\\:register_location_choice_2_input').length > 0){
    //some code here
}