[Seasar-user:3676] Re: selectManyCheckBox について
Shinpei Ohtani
[E-MAIL ADDRESS DELETED]
2006年 5月 23日 (火) 01:39:48 JST
shotです。
返事がおそくなりました
06/05/19 に Toba Tetsuya<[E-MAIL ADDRESS DELETED]> さんは書きました:
> S2JSF 1.1.0 betaを用いて、システム開発を行っています。
>
> ラジオボタンを使って、テーブルの行を選択をするレイアウトは、
> 下のように selectOneRadio を使って実現できました。
>
> <form>
> <span m:inject="s:selectOneRadio"
> m:value="#{sample.selectedIndex}">
> <table>
> <tr>
> <th>ラジオ</th>
> <th>氏名</th>
> </tr>
> <span m:inject="s:forEach"
> m:items="#{sample.nameList}"
> m:var="e" m:varIndex="i">
> <tr>
> <td>
> <input type="radio" value="#{i}"></input>
> </td>
> <td>
> <span m:value="#{e.name}"></span>
> </td>
> </tr>
> </span>
> </table>
> </span>
> <input type="submit" m:action="index"></input>
> </form>
>
> ところが、複数選択するために selectManyCheckbox を使って
> チェックボックスに変えたところ、チェックボックスすら出て
> こない状態となりました。
> HTMLソースを見ると、inputタグ自体が消えていました。
>
> <form>
> <span m:inject="s:selectManyCheckbox"
> m:value="#{sample.checkedIndex}">
> <table>
> <tr>
> <th>チェック</th>
> <th>氏名</th>
> </tr>
> <span m:inject="s:forEach"
> m:items="#{sample.nameList}"
> m:var="e" m:varIndex="i">
> <tr>
> <td>
> <input type="checkbox"
> m:inject="s:selectItem"
> value="#{i}"></input>
> </td>
> <td>
> <span m:value="#{e.name}"></span>
> </td>
> </tr>
> </span>
> </table>
> </span>
> <input type="submit" m:action="index"></input>
> </form>
>
> テーブルタグやforEachを取り除いてやると、正しく動くようです。
>
> <form>
> <span m:inject="s:selectManyCheckbox"
> m:value="#{sample.checkedIndex}">
> <input type="checkbox"
> m:inject="s:selectItem"
> value="0"></input>
> <input type="checkbox"
> m:inject="s:selectItem"
> value="1"></input>
> </span>
> <input type="submit" m:action="index"></input>
> </form>
>
> selectManyCheckBox では、このような使い方はできないのでしょうか?
現状だと、selectManyCheckBoxを上記のような使い方は
できないです。実現可能にできるかどうかは検討してみますが
現時点では私の方では出来ませんでした(もし間違っていたらどなたかご指摘願います)。
代替案としては、下記のようにselectManyCheckboxを使わずに
通常のcheckboxを使うようにして、
<span m:inject="s:forEach" m:items="#{forEachDtoList}"
m:var="e" m:varIndex="i">
<tr>
<td><input type="checkbox" m:value="#{e.select}" /></td>
<td><span m:value="#{e.key}">111</span></td>
<td><span m:value="#{e.name}">aaa</span></td>
<td><a href="forEachResult.html" m:action="forEachResult">to ResultPage
<span m:inject="f:param" m:name="index" m:value="#{i}"/>
</a>
</td>
<td>
<input type="button" m:action="forEachResult" value="to ResultPage"
onclick="location.href='forEachResult.html'">
<span m:inject="f:param" m:name="index" m:value="#{i}"/>
</input>
</td>
</tr>
</span>
Dto側で、
public class ForEachDto implements Serializable {
private static final long serialVersionUID = 1L;
private String key;
private String name;
private boolean select;
public boolean isSelect() {
return select;
}
public void setSelect(boolean select) {
this.select = select;
}
public ForEachDto() {
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
のようにすると良いと思います。
Seasar-user メーリングリストの案内