2

コントローラーで不明な数のラジオボタン値を受け取る必要があります。

ラジオボタンが生成され、異なる場合があります...したがって、ユーザーが送信するのと同じ数を受信する方法が必要です。どうすればこれを達成できますか?

表示 (速度を使用):

...
#foreach( $f in $model.fields )
<input type="radio" name="rd_$f.name" value="S" checked="checked"/> S
<input type="radio" name="rd_$f.name" value="C" /> C
#end
...

これにより、X個のラジオボタンセットが生成されます...コントローラーで受信する必要があります:

@RequestMapping(value = "/{e}/{id1}/{id2}", method = RequestMethod.POST)
    public ModelAndView salvar(@PathVariable(value = "e") String e,
            @PathVariable(value = "id1") Long id1, 
            @PathVariable(value = "id2") Long id2,
            //MY RADIO BUTTONS ARRAY HERE!
      ) {

          ...

    }

アップデート:

生成される html は次のようなものです。

...
<input type="radio" name="rd_1" value="S" checked="checked"/> S
<input type="radio" name="rd_1" value="C" /> C
...
<input type="radio" name="rd_2" value="S" checked="checked"/> S
<input type="radio" name="rd_2" value="C" /> C
...
<input type="radio" name="rd_n" value="S" checked="checked"/> S
<input type="radio" name="rd_n" value="C" /> C
...

コントローラーの [] にバインドすることはできませんよね?

4

2 に答える 2

4

@RequestParam(value="radio_name") String[] radioCheckedValuesSpringControllerのもう1つの属性としてを使用してバインドできます。

編集 サーバーがクライアントから何が来ているかを知る唯一の方法は、名前を使用することです。を使用できますrequest.getParameterNames

擬似コード...

List<String> values = new ArrayList();
Enumeration<String> enumeration = req.getParameterNames();
while (enumeration.hasMoreElements()) {
    String parameterName = (String) enumeration.nextElement();
    if(parameterName.startsWith("rd_")) {
        values.add(req.getParameter(parameterName));
    }
}
于 2013-03-22T14:01:49.833 に答える
1

名前で使用[]して、各ラジオボックスを 1 つの配列にグループ化します。

#foreach( $f in $model.fields )
<input type="radio" name="radio[]" value="S" checked="checked"/> S
<input type="radio" name="radio[]" value="C" /> C
#end

次に、コントローラーでこの配列を読み取ります。

編集:

値を取得するには (各配列でループ):

String[] params = request.getParameterValues("rd_n");  
于 2013-03-22T14:05:55.240 に答える