2013-03-22 2 views
2

Мне нужно получить и неизвестное количество значений Radio Buttons на моем контроллере.Spring MVC: Получать значения радиокнопки

Развоны генерируются и могут меняться ... Поэтому мне нужен способ получить столько, сколько пользователь отправляет. Как я могу достичь этого?

View (с использованием скорости):

... 
#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! 
    ) { 

      ... 

    } 

UPDATE:

Созданный 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

Вы можете связать, используя @RequestParam(value="radio_name") String[] radioCheckedValues как еще один атрибут в контроллере пружины.

EDIT Единственный способ, которым сервер может знать о том, что происходит от клиента, - это имя. Вы можете использовать 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)); 
    } 
} 
+0

я обновил свой вопрос, если вы можете увидеть проблему сейчас! спасибо – renanlf

+0

проверить мое обновление ... –

+0

Большое спасибо! Это именно то, что мне нужно. – asgs

1

Использование [] во имя к группе каждый radiobox в одном массиве:

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

Затем прочитайте этот массив в контроллере.

Edit:

Для получения значения использовать (цикл на каждом массиве):

String[] params = request.getParameterValues("rd_n"); 
+0

Я обновил свой вопрос, посмотрю, можете ли вы увидеть проблему сейчас! спасибо – renanlf

+0

Вы можете создать массив для каждой группы, используя name = "rd_n []". –

Смежные вопросы