PrimeFacesのSelectOneRadioをJavaScriptから操作する

kikutaro777さんが書いてるように、PrimeFacesではClient APIを使って結構手軽にJavaScriptからコンポーネントを操作できます。
PrimeFacesのTabViewをJavaScriptで操作する - Challenge Java EE !


ところが、SelectOneRadioはそういう便利APIが用意されていないので、やろうとしたときにちょっとハマります。


たとえば次のようなSelectOneRadioがあるとします。

<p:selectOneRadio id="hoge">
  <f:selectItem itemValue="L" itemLabel="左へ行く"/>
  <f:selectItem itemValue="R" itemLabel="右へ行く"/>
</p:selectOneRadio>

そうすると、それぞれのラジオボタンhoge:0、hoge:1というIDになっているので、これをclickすることになります。


実際には、formのIDなど親コンポーネントのIDも付加されるので、実際のコードはこんな感じになります。

document.getElementById('form:hoge:0').click();


あまり実コードでこのような操作をすることはないと思うのですが、Seleniumなどで自動テストしようとすると絶対に必要になります。
そのときにハマります。というか、ハマりました。
Seleniumじゃなく、JavaFXのWebEngineつかった自作Webテストですけど。