Combos (s:select) - Struts 2

13 respostas
R

Pessoal,
Criei um combo que ao selecionar uma opção dispara uma Action preenchendo outro combo de acordo a opção selecionada, mas ao carregar a página novamente, o valor do primeiro combo volta ao inicial, não estando selecionada a opção que cliquei.

Alguém sabe como resolver isso?

Estou usando Struts 2.

[]'s

13 Respostas

K

Quando for disparar a Action para popular o 2o select passe
como parametro o id do item selecionado no 1o select.

Ai é só restaurar o valor do 1o select e vais ter o 2o select
populado…

Espero que ajude… :thumbup:
[s]ao

M

to com o mesmo problema, alguem teria um pseudo-codigo para nos ajudar ?

M

o negocio é que para pegar resultado de um select e mante-lo indo e vindo da action, ele precisa ser STRING !!! Apanhei muito ate descobrir, mas ta valendo. Como string ele vai e volta ja populado…

A

Muldon, qual a versão do Struts 2 que você está usando?

Esse bug já foi corrigido desde a versão 2.0.6. Eu também passei por este tipo de problema mas agora já consigo fazer o select pré-setar os valores de qualquer tipo Java.

M

valeu alexandremlima , realmente minha versao é a 2.0.5. Vou testar a nova. Abraco

D

Ressucitando o tópico: :stuck_out_tongue:
o resultado do meu select é uma string, mas eu não consigo fazê-lo ficar auto-selecionado quando volta da action.
tem pouco tempo que eu uso struts2 então não sei se estou escrevendo a tag do jeito certo.

aí vai meu pedaço de jsp/html

<tr>
	<td width="18%">Turma:</td>
	<td>
		<s:select id="turma" 
			name="frm.turma"
			list="frm.lstTurmas"
			headerKey="0" 
			headerValue=" -- Selecionar -- "
			onchange="getDisciplinas(codProf.value,this.value, 1)"
		/>
	</td>
 	<td>Sub-Turma:</td>
	<td>
		<s:select id="subTurma"
			name="frm.subturma"
			headerKey="" 
			headerValue=" -- Selecionar -- "
			list="#{'':' -- Selecionar -- ' }"
		    	value="frm.subturma" >
		</s:select>
	</td>
</tr>

quando eu dou submit na página, o primeiro combo vem com a turma selecionada, enquanto o segundo vem com o valor default " – Selecionar – " e não a subturma que eu escolhi antes do submit. E se eu colocar no atributo ‘list’ da tag select a lista que será preenchida pela acao do primeiro combobox, dá o famoso erro:

Alguém tem alguma idéia pra solucionar isto?

agradeço desde já :slight_smile:

D

tentei mudar a minha tag do 2o select colocando no o atributo list assim:

list="#{'':' -- Selecionar -- ' }"
tentei tb colocar a tag select similar à do primeiro select, mas não funcionou, atualmente no jsp está assim:
<td width="18%">Turma:</td>
		<td>
			<s:select 
				id="turma" 
				name="turma"
				list="lstTurmas"
				headerKey="0" 
				headerValue=" -- Selecionar -- "
				onchange="getDisciplinas(codProf.value,this.value, 1)"
			 />
		</td>
 		<td>Sub-Turma:</td>
		<td>
 		    <s:select
   				id="subTurma"
				name="subturma"
   				headerKey="" 
				headerValue=" -- Selecionar -- "
				list="#{'':' -- Selecionar -- ' }"
		    	value="subturma" >
		    </s:select>
		    
		</td>

já olhei no site do struts2 procurando pela referência das tags e não achei nada que pudesse ser relevante.
a lista lstTurmas que é carregada no atributo list do primeiro select é carregada no prepare() da action, o segundo select é populado no evento onChange do primeiro select, mas quando eu faço submit da página ele não volta com o valor escolhido, como eu gostaria..

se alguém puder me apontar um caminho, mostrar um exemplo, etc.. ficarei muito grato

[]'s

A

Tive problemas com o combo da doubleselect, pois este não chamava minha função javascript do onchange…

A

dlt:
Ressucitando o tópico: :stuck_out_tongue:
o resultado do meu select é uma string, mas eu não consigo fazê-lo ficar auto-selecionado quando volta da action.
tem pouco tempo que eu uso struts2 então não sei se estou escrevendo a tag do jeito certo.

aí vai meu pedaço de jsp/html

<tr>
	<td width="18%">Turma:</td>
	<td>
		<s:select id="turma" 
			name="frm.turma"
			list="frm.lstTurmas"
			headerKey="0" 
			headerValue=" -- Selecionar -- "
			onchange="getDisciplinas(codProf.value,this.value, 1)"
		/>
	</td>
 	<td>Sub-Turma:</td>
	<td>
		<s:select id="subTurma"
			name="frm.subturma"
			headerKey="" 
			headerValue=" -- Selecionar -- "
			list="#{'':' -- Selecionar -- ' }"
		    	value="frm.subturma" >
		</s:select>
	</td>
</tr>

quando eu dou submit na página, o primeiro combo vem com a turma selecionada, enquanto o segundo vem com o valor default " – Selecionar – " e não a subturma que eu escolhi antes do submit. E se eu colocar no atributo ‘list’ da tag select a lista que será preenchida pela acao do primeiro combobox, dá o famoso erro:

Alguém tem alguma idéia pra solucionar isto?

agradeço desde já :slight_smile:

Você conseguiu resolver seu problema?

A

[quote=antoniopopete][quote=dlt]Ressucitando o tópico: :stuck_out_tongue:
o resultado do meu select é uma string, mas eu não consigo fazê-lo ficar auto-selecionado quando volta da action.
tem pouco tempo que eu uso struts2 então não sei se estou escrevendo a tag do jeito certo.

aí vai meu pedaço de jsp/html

<tr>
	<td width="18%">Turma:</td>
	<td>
		<s:select id="turma" 
			name="frm.turma"
			list="frm.lstTurmas"
			headerKey="0" 
			headerValue=" -- Selecionar -- "
			onchange="getDisciplinas(codProf.value,this.value, 1)"
		/>
	</td>
 	<td>Sub-Turma:</td>
	<td>
		<s:select id="subTurma"
			name="frm.subturma"
			headerKey="" 
			headerValue=" -- Selecionar -- "
			list="#{'':' -- Selecionar -- ' }"
		    	value="frm.subturma" >
		</s:select>
	</td>
</tr>

quando eu dou submit na página, o primeiro combo vem com a turma selecionada, enquanto o segundo vem com o valor default " – Selecionar – " e não a subturma que eu escolhi antes do submit. E se eu colocar no atributo ‘list’ da tag select a lista que será preenchida pela acao do primeiro combobox, dá o famoso erro:

Alguém tem alguma idéia pra solucionar isto?

agradeço desde já :slight_smile:

Você conseguiu resolver seu problema???++++

L

Ajuda aí poh…
Estou querendo popular o segundo select de acordo com o valor selecionado no primeiro select

V

Veja esse exemplo, acho que vai te ajudar.

Flw! :thumbup:

M

… Ajax, talvez? :roll:

Criado 23 de novembro de 2006
Ultima resposta 13 de jan. de 2011
Respostas 13
Participantes 10