<RESOLVIDO>Setar a opção selecionada de um SELECT dinamicamente

5 respostas
R

Se eu tenho um select assim:

<select name="type"> <option> <option> Instrução de Operação <option>Instrução Normativa <option>Norma de Operação <option>Acordo Cooperativo <option>Diagramas Unifilares <option>Interligamento </select>

Eu quero ir num servlet e e fazer o refresh da página que contém esse select… só que quando voltar eu quero q o option q o cara selecionou fique como selected, como fazer isso sem replicação de código?(eu tinha feito com jstl com um monte de c:choose mas fica mto feia essa solução)

Mesma dúvida com relação a inputs do tipo radio

5 Respostas

R

Opa man!

Bem se vc vem com esse valor ja da servlet vc pode usar uma funcao em javascript p/ fazer isso p/ vc, vou dar um exemplo

no onload da sua pagina vc adiciona isso

onload="mostrarOpcaoSelecionada(document.form.NOMEDOSELECT.value);"

ai vc cria a funcao

function mostrarOpcaoSelecionada(valor)

{

// O que vc quer q ele faça qndo vier tal opção selecionada

}
F

tente passar um valor para cada option, tipo um ID.

&lt;select name="meuCombo"&gt; &lt;option value="0"&gt; &lt;/option&gt; &lt;option value="1"&gt; Instrução de Operação&lt;/option&gt; &lt;option value="2"&gt;Instrução Normativa&lt;/option&gt; &lt;option value="3"&gt;Norma de Operação&lt;/option&gt; &lt;option value="4"&gt;Acordo Cooperativo&lt;/option&gt; &lt;option value="5"&gt;Diagramas Unifilares&lt;/option&gt; &lt;option value="6"&gt;Interligamento&lt;/option&gt; &lt;/select&gt;
quando vc chamar a página pelo servlet, jogue esse valor pra sessão/request.

request.setAttribute("meuCombo", valor)
R

Valeu pelas respostas…

finotti:
tente passar um valor para cada option, tipo um ID.

&lt;select name="meuCombo"&gt; &lt;option value="0"&gt; &lt;/option&gt; &lt;option value="1"&gt; Instrução de Operação&lt;/option&gt; &lt;option value="2"&gt;Instrução Normativa&lt;/option&gt; &lt;option value="3"&gt;Norma de Operação&lt;/option&gt; &lt;option value="4"&gt;Acordo Cooperativo&lt;/option&gt; &lt;option value="5"&gt;Diagramas Unifilares&lt;/option&gt; &lt;option value="6"&gt;Interligamento&lt;/option&gt; &lt;/select&gt;
quando vc chamar a página pelo servlet, jogue esse valor pra sessão/request.

request.setAttribute("meuCombo", valor)

Cara… se eu fizer isso ele ja seta automatico? Eu não entendi bem…
Se eu fizer um getAttribute(“meuCombo”) ele traz o valor do option selecionado neh (0,1,2,3…)?
Blz… quando eu fizer um setAttribute(“meuCombo”,valor)… esse valor eh o numero da option?
Quando o jsp recarrega ele ter q fazer alguma chamada desse valor q o servlet chamou neh? Eu não to vendo isso no seu código, não entendo onde eu digo que a option selecionada eh “fulana”…

obrigado

R

Olhem como fiz...

O servlet recebe a opção que foi escolhida no select... dá forward para a mesma página com essa opção sendo mandada novamente para o jsp... aqui está um resuminho do jsp..

<head>
	<script type="text/javascript">
		function setType(type) {
			alert(type);
			var typeList = document.getElementById("type");
			var selectedType = document.getElementById(type);
			selectedType.selected = true;
		}	
	</script>
</head>

<body onload="setType(${type})">
...
    <select id="type" name="type">
		<option id="blank" value="blank">
		<option id="Instrução de Operação" value="Instrução de Operação">Instrução de Operação
		<option id="Instrução Normativa" value="Instrução Normativa">Instrução Normativa
		<option id="Norma de Operação" value="Norma de Operação">Norma de Operação
		<option id="Acordo Cooperativo" value="Acordo Cooperativo">Acordo Cooperativo
		<option id="Diagramas Unifilares" value="Diagramas Unifilares">Diagramas Unifilares
		<option id="Interligamento" value="Interligamento">Interligamento
	</select>
</body>

O problema, é que esse onload é chamado apenas quando a página é carregada pela primeira vez... quando o servlet dá o forward para a página o onload não é mais executado... alguem sabe pq?

R

Era somente colocar setType(’${type}’)

Criado 1 de dezembro de 2008
Ultima resposta 1 de dez. de 2008
Respostas 5
Participantes 3