0

tabView多くのタブを持つコンポーネントを使用しています。それらの多くにはform、primefacescommandButtonコンポーネントによって送信されたものがあります。

デフォルトでは、PFcommandButtonは ajax モードを使用しますが、フォームを送信すると、ページが完全にロードされたように見え、tabViewコンポーネントのインデックス ビューが失われます (インデックス 0 がレンダリングされます)。

それは正常な動作ですか?

それはajaxなので、同じインデックスにとどまるだろうと思いました...

4

2 に答える 2

1

p:tabView割り当てた方がよいネーミング コンテナ (おそらく)があるように見えます。idj_idt16myTab0myTab1

例えば<p:tabView id="myTab"

安全な側にいるためにできるもう1つのことは、次のように、jqueryで選択してその値にアクセスする前に、要素が存在するかどうかを確認することです

if($('#j_idt16\\:register_location_choice_2_input').length > 0){
    //some code here
}
于 2013-01-06T11:30:21.823 に答える
0

わかりました、私の問題はJSvalidateRegisterForm関数です。削除すると機能しますが、必要です...

検証フォームを起動できるかどうかを確認するために使用します。

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で検証フォームを送信して許可する前にフィールド値を確認するにはどうすればよいですか?

編集 :

OK、ボタンをnotにtype渡し、componentを使用して JS 関数内で検証を開始することで、問題を解決しました。buttonsubmitremoteCommand

私のJS関数:

function validateRegisterForm(){    

if(...)
      validateForm();

}

そして私のremoteCommand

<p:remoteCommand name="validateForm" actionListener="#{login.registerAccount()}"/>
于 2013-01-06T11:10:36.510 に答える