Estou precisando submeter um formulário que seria as respostas de um questionário.
Um questionário possui uma lista de questões e cada questão uma lista de alternativas.
Para eu poder trabalhar com o radio (e apenas uma seleção de alternativa), o nome do radio deve ser igual.
Normalmente eu faria assim:
[code]#foreach( $alternativa in $!alternativas )
$!alternativa.descricao
#end[/code]
O que seria rederizado na tela como:
[code]
I
II
III
Todas as alternativas anteriores
[/code]
Mas trabalhando com vraptor, esta seria a melhor maneira de trabalhar?
como eu pegaria esses valores no método do controller?
Dei uma olhada nos links, mas isso não resolve para o meu problema específico. Se eu deixar a lista de radio (ou checkbox) com o mesmo nome, o usuário só poderá escolher uma alternativa para todo o questionario. Meu problema não é trabalhar como checkbox, mas sim receber ‘diferentes’ radios (que possuem diferentes e dinamicos names) no Controller…
o que vai pro controller é o value do radio checkado. Pro controller tanto faz se for:
<input type="hidden" name="abc" value="123"/>
ou
<input type="text" name="abc" value="123"/>
ou
<input type="radio" name="abc" value="123"/> //checkado
ou
<input type="checkbox" name="abc" value="123"/> //checkado
ou
<input type="submit" name="abc" value="123"/> //clicado
em todos esses casos vc recebe no controller como String abc ou algo do tipo.
só lembre-se que um radio só está ligado a outro se tiver o mesmo nome. Ou seja, se vc quer que se marcar um desmarque os outros, todos tem que ter o mesmo name
[quote=Lucas Cavalcanti]em todos esses casos vc recebe no controller como String abc ou algo do tipo.
só lembre-se que um radio só está ligado a outro se tiver o mesmo nome. Ou seja, se vc quer que se marcar um desmarque os outros, todos tem que ter o mesmo name[/quote]
oi Lucas,
A questão é justamente essa… eu sei que no controller tenho que receber a String abc, ou o objeto que eu quiser desde que o name esteja igual a assinatura do metodo no controller.
O problema é que eu tenho X questões e cada questão Y alternativas. O usuario pode marcar uma apenas alternativa por questão.
Se eu colocar todos os names iguais pra receber essa lista no controller, ele só vai conseguir responder uma questao em todo o questionario.
se eu colocar os names diferentes para cada questão, como vou receber esses names no controller já que eles são dinamicos?
o importante é que o índice do hidden seja o mesmo que o das alternativas, mas vc precisa mudar o índice para cada questão (não precisa ser sequencial, vc pode usar questao.id como índice, embora sequencial seja um pouco mais performático)
daí do lado do servidor vc recebe uma List ou outro objeto que tenha o id da questao e o id da resposta como atributos (com setters)