Struts <html:select>

5 respostas
rmlang

Utilizando HTML e JavaScript, criei 2 “combox” e alguns botoes para manipular as opções. Desenhando grosseiramente ficou mais ou menos assim:

opcao1|  subir  |opcao5
opcao2|   >   |opcao6
opcao3|   <   |
opcao4| descer |

O primeiro combo recebe uma lista de opções e através dos botões no meio, deve enviar as opções para o segundo combo. No segundo combo, tenho que permitir a ordenação das opções através dos botoes subir e descer.
Os dois combos permitem seleção multipla.

O HTML e JavaScript já estão funcionando perfeitamente, manipulando corretamente as opções.

Agora preciso adaptar isso para carregar o primeiro combo a partir do struts e depois, recuperar o conteúdo do segundo combo, na ordem que o usuário deixou.

Já pesquisei todas as mensagens relativas a struts, select, option e options no forum e não encontrei algo que me auxiliasse.
Também já revirei a net com o google e não encontrei nada semelhante.

Alguém pode me dar algumas dicas?

[]'s

Robert

5 Respostas

L

E ae rmlang…

Em que momento tu queres que aconteça tal ação?
Exemplo: após submetida a página ela retorna com os combos já montados? Seria isso?

Obs: A maneira como tu fez, no menu ver está correta. Qdo tu for submeter a sua página, acredito que os dados do segundo “combo” deverão ser armazenados em um BD. Bom até aí tudo bem, qdo entrares na página novamente, a mesma deve vir com os combos montados da mesma forma que tu os montou. Isso?

rmlang

“Lucashgt”:
E ae rmlang…

Em que momento tu queres que aconteça tal ação?
Exemplo: após submetida a página ela retorna com os combos já montados? Seria isso?

Obs: A maneira como tu fez, no menu ver está correta. Qdo tu for submeter a sua página, acredito que os dados do segundo “combo” deverão ser armazenados em um BD. Bom até aí tudo bem, qdo entrares na página novamente, a mesma deve vir com os combos montados da mesma forma que tu os montou. Isso?

Blz, Lucashgt!?

Explicando um pouco mais, esses combos servirão para que o usuário escolha uma lista de campos de uma tabela para gerar uma outra visualização ou relatório. Certamente haverá uma situação que permitirá alterar o que foi selecionado.

Como eu ainda estou aprendendo a utilizar o struts, nem mesmo sei se dá pra capturar os dados do segundo combo, na ordem que ficou. Caso não funcione, pensei em criar um campo escondido no formulario que receberia todo o conteudo do combo por javascript, mas eu ainda vou precisar alimentar o primeiro combo.

Será que tem alguma forma mais simples de fazer isso?

L

Cara, é possível de se fazer sim. No teu FormBean, você deve ter um atributo que represente este segundo “combo”. A existência desse atributo no teu FormBean, permite recuperar o mesmo na tua action, podendo trabalhar normalmente como tu vem trabalhando.

O fluxo continua normal, basta tu ter esse combo como sendo um atributo do teu FormBean. :wink:

rmlang

“Lucashgt”:
Cara, é possível de se fazer sim. No teu FormBean, você deve ter um atributo que represente este segundo “combo”. A existência desse atributo no teu FormBean, permite recuperar o mesmo na tua action, podendo trabalhar normalmente como tu vem trabalhando.

O fluxo continua normal, basta tu ter esse combo como sendo um atributo do teu FormBean. :wink:

Lucas, eu ainda estou um pouco perdido :oops: e não entendi como deve ser feita essa declaração no form, vc teria como postar um exemplo simples? :shock:

Cara, agradeço muito a sua atenção e espero poder retribuir!!! :smiley:

rmlang

Consegui fazer uma parte :? do que eu queria, ficou assim:

html:
<html:select property="origem" size="10" multiple="true" ondblclick="OptionCutAndPaste(forms[0].origem,forms[0].destino)">
	<html:options property="origens"/>
</html:select>
...
<html:select property="destino" size="10" multiple="true" ondblclick="OptionCutAndPaste(forms[0].destino,forms[0].origem)">
	<html:options property="destinos"/>
</html:select>
ActionForm:
public final class ReportForm extends ActionForm {
	private String origem;
	public String getOrigem() {return origem;}
	public void setOrigem(String origem) {this.origem = origem;}

	private String[] origens = {
    		"- Selecione -",
			"Primeiro",
			"Segundo",
			"Terceiro",
			"Quarto",
			"Quinto",
			"Sexto",
			"Sétimo",
			"Oitavo",
			"Nono",
			"Décimo",
			"Décimo primeiro",
			"Décimo segundo"
	};	
	public String[] getOrigens() {return origens;}
	public void setOrigens(String[] origens) {this.origens = origens;}
	
	private String destino;
	public String getDestino() {return destino;}
	public void setDestino(String destino) {this.destino = destino;}
	
	private String[] destinos = {};
	public String[] getDestinos() {return destinos;}
	public void setDestinos(String[] destinos) {this.destinos = destinos;}
	
	...	
}

O que ocorre agora é que depois de enviar o formulario, a string destino contem a primeira opção marcada no "combo" destino e a string destinos fica em branco.

Preciso pegar o retorno da string destinos que deve conter todas as opções do combo na ordem que estiverem. :shock:

Sugestões?? :?:

Criado 29 de setembro de 2004
Ultima resposta 30 de set. de 2004
Respostas 5
Participantes 2