- - PR -
struts で radio
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-04-04 23:18
はじめまして
struts1.1を使用してweb開発をしているのですが jspでラジオボタンを以下のループで回した時 <logic:iterate name="List" id="loop"> <br> <html:radio property="data" value="0" />ラジオボタン1<br> <html:radio property="data" value="1" />ラジオボタン2<br> <br> </logic:iterate> 全てのラジオボタンがグループ化してしまいました。 これを1ループ毎にグループ化しようと以下のコードにしてみました。 <logic:iterate name="List" id="loop" indexId="id"> <br> <html:radio property="<%= "data[" + id + "]" %>" value="0" />ラジオボタン1<br> <html:radio property="<%= "data[" + id + "]" %>" value="1" />ラジオボタン2<br> <br> </logic:iterate> そしたら、今度はbeanでうまく値を受け取れなくなってしまいました。 どうすれば実装できるかわからず困っています。 どうかご教授ください。 | ||||
|
投稿日時: 2005-04-05 01:18
配列でめですか?
data[] | ||||
|
投稿日時: 2005-04-05 13:46
getter/setter を以下のように書いてあるのですが
うまく動きません private String[] data; public String[] getData(int idx) { return data; } public void setData(int idx,String[] strings) { data[idx] = strings; } getter/setterをどのように記述すればよいでしょうか? | ||||
|
投稿日時: 2005-04-05 15:07
配列しか受け渡せないと思います。
indexはまったく受け取らないようにしたら動くと思います。 private String[] data; public String[] getData() { return data; } public void setData(String[] strings) { data[] = strings; } こんな感じ。 恐らく、JSP書き込みでindexがほしい場合は、 <logic:iterate id="変数名1" collection="ここに配列を渡してやる" indexId="変数名2"> <html:input value="<%=変数名1[変数名2]%>"> </logic:iterate> こんなんで取れませんかね? (注意:値が取れてるか取れていないかのプロトタイプを想定の為、 インプットテキストにしています。) 詳細は、strutsのカスタムタグの項のhtmlタグのところを参照してください。 | ||||
|
投稿日時: 2005-04-05 15:31
るぱんさん、レスありがとうございます
現状は以下のような感じで、ラジオボタンのname属性を "data[index]" という形にしたのでエラーが出ている状態です。 ラジオボタンのname属性を "data" としてしまうと、iterateで回しているので 全てのラジオボタンがグループ化されてしまいます。 indexed="true" も試してみましたが、挙動がおかしくなってしまい、使えませんでした。 JSP -------------- <logic:iterate name="List" id="loop"> <br> <html:radio property="data" value="0" />ラジオボタン1<br> <html:radio property="data" value="1" />ラジオボタン2<br> <br> </logic:iterate> ----------------------------------------------------------- getter/setter -------------- private String[] data; public String[] getData() { return data; } public void setData(String[] strings) { data = strings; } ----------------------------------------- error ------- null' java.lang.NullPointerException at org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(PropertyUtils.java:515) at ... | ||||
|
投稿日時: 2005-04-05 16:20
エラーのまんまです。 null' java.lang.NullPointerException at org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(PropertyUtils.java:515) at ... <logic:iterate name="List" id="loop" indexId="index"> <br> <html:radio property="data[<%=index%>]" value="0" />ラジオボタン1<br> <html:radio property="data[<%=index%>]" value="1" />ラジオボタン2<br> <br> </logic:iterate> こんな感じでもだめですか・・・? | ||||
|
投稿日時: 2005-04-05 16:53
ダメでした。
JSPの方は、きちんと <input type="radio" name="data[0]" value="0">ラジオボタン1<br> <input type="radio" name="data[0]" value="0">ラジオボタン1<br> <br> <input type="radio" name="data[1]" value="0">ラジオボタン1<br> <input type="radio" name="data[1]" value="0">ラジオボタン1<br> <br> ... といった具合に表示されるのですが このindex付きnameの getter/setter がどうしてもうまくいきません・・・ | ||||
|
投稿日時: 2005-04-05 17:50
こんにちは。
getterにインデックス付きのものを用意するとどうなりますか?
のような感じです。 |