私の 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});"/>
ここで何をすべきか知っている人はいますか?