動的なラジオボタンの生成方法と、Labelタグが使えない?という疑問
動的なラジオボタンの生成には、S2JSF独自の、selectOneRadio2が利用できます。
具体的には、
s:forEachでラジオボタンHTMLを動的に生成しつつ、
s:selectOneRadio2 で囲むことでid値や初期値の設定を行うものです。
requiredにも対応しています。
<form id="HogeForm" name="HogeForm"> <span m:inject="s:selectOneRadio2" id="hooId" m:value="#{hogeDto.hooId}" m:label="ほげ区分" m:required="true"> <span m:inject="s:forEach" m:items="#{hooList}" m:var="h"> <input type="radio" id="hooId" value="#{h.id}"/> <label for="HogeForm:hooId"><span m:value="#{h.name}"/></label> </span> <span m:inject="h:message" m:for="hooId" m:class="error" /> </span> </form>
以下のようなHTMLがレスポンスされます。
<input type="radio" id="hogeForm:_id134_0:hooId" name="hogeForm:hooId" value="1"> <label for="hogeForm:hooId">ふー</label> <input type="radio" id="hogeForm:_id134_1:hooId" name="hogeForm:hooId" value="2"> <label for="hogeForm:hooId">ばー</label>
-
-
- -
-
さて、ここで、ラジオボタンのテキスト部分を囲む<label>タグはどのように書くと有効になるのでしょうか?
ラジオボタンのid属性が動的に決まるため、labelのfor属性と一致させることができません...orz