3

私の JSF ビューでは、p:selectOneRadioを使用しています。ここで、副作用としてクライアント側でこのコンポーネントの値を変更する必要があります。このコンポーネントのクライアント側 API で、適切な使用方法が見つかれば、これに使用できると思われる以下を見つけました。

PrimeFaces.widget.SelectOneRadio=PrimeFaces.widget.BaseWidget.extend(
{
    // ...      
    select:function(a){
        this.checkedRadio=a;
        a.addClass("ui-state-active")
         .children(".ui-radiobutton-icon")
         .addClass("ui-icon-bullet").removeClass("ui-icon-blank");
        a.prev().children(":radio").prop("checked",true)}
});

私には (JS についてあまり知識がなくても)、選択したいラジオボタンのインスタンスに似たものを渡す必要があるように見えます。私はこれをいくつかの方法で試しましたが、どれもうまくいきません:

<p:selectOneRadio widgetVar="sel" id="id-sel" >                
        <f:selectItem itemValue="#{false}" itemLabel="n/a" />
        <f:selectItem itemValue="#{true}" itemLabel="date" />
</p:selectOneRadio>               

<p:commandButton onclick="PF('sel').select(sel.inputs[1]);"/>
<p:commandButton onclick="PF('sel').select(PF('sel').inputs[1]);"/>
<p:commandButton onclick="PF('sel').select( $('input:radio[id*=id-sel\\:1]') );"/>       
<p:commandButton 
      onclick="PF('sel').select(document.getElementById('menuform:id-sel:1'));"/>  

ただし、値やラベルを直接渡そうとしました (これは selectOneMenu などで機能します)。ここでも成功しませんでした (ただし、この場合は驚くべきことではありません)。

<p:commandButton onclick="PF('sel').select('date');"/>
<p:commandButton onclick="PF('sel').select('true');"/>
<p:commandButton onclick="PF('sel').select(1);"/>
<p:commandButton onclick="PF('sel').select(true);"/>
<p:commandButton onclick="PF('sel').select(#{true});"/>

ここで何をすべきか知っている人はいますか?

4

1 に答える 1

8

渡す必要がある要素は<span>、ラジオのルック アンド フィールをシミュレートする です。このスパンには.ui-radiobutton-boxCSS クラスがあります。単純な呼び出しは次のようになります。

PF('selectOneRadioWV').select($('.ui-radiobutton-box').first())

これにより、最初のラジオが選択されます。

ただし、select関数はのみを選択しますが、これは予想される動作ではありません。予想されるのは、以前に選択したラジオの選択を解除し、新しいラジオを選択することです。

そうは言っても、値に基づいて選択したい場合(より理にかなっています)、次のアプローチが機能します。

PF('selectOneRadioWV').jq.find('input:radio[value="1"]').parent().next().trigger('click.selectOneRadio');

そこで、値を持つラジオ入力を選択し、ウィジェットによって定義されたイベントをトリガー1する対応する場所に移動します。そのようにして、ajax 関連のイベントが適切に呼び出されるようにします。.ui-radiobutton-box

于 2015-01-22T15:53:11.150 に答える