Implementando uma lista de objetos com a opção de mudar suas posições na lista [RESOLVIDO]

Olá, estou com um problema em começar uma certa implementação.

O problema é o seguinte:

Preciso criar uma pagina que traga os valores de uma tabela (através de uma lista de objetos) e com esses valores organizados em lista na minha JSP, eu selecionaria um objeto e clicaria em uma opção de “Descer Um” ou “Subir Um”, assim mudando a posição do objeto na lista. Depois confirmaria minha lista e essa nova ordems eria salva na tabela.

Um conhecido disse para usar JList, mas isso é para desktop, minha aplicação é web. Vocês teriam alguma dica de por onde começar, ou qual API utilizar?

[Resolvido]

Consegui, utilizei javascript para mudar a posição dos elementos na pagina e no momento do submit eu pego todos os values(onde estão os entityId dos elementos) e coloco todos em uma string e envio para a classe.
Na classe passo um StringTokenizer e armazeno eles em um Array, depois faço um For para procurar no banco e setar um atributo chamado Ordem de acordo com a posição do elemento no Array.

Vc simplesmente coloca um campo Ordem no bean que estiver usando. coloca todos os beans numa lista (List, como ArrayList) e manda ordenar com Collections.sort() .Terá que criar um comparador que use o campo ordem para estabelecer a ordem.

Bom pelo o que eu entendi você precisa mover esse elemento uma posição para cima ou para baixo na lista certo?
Acho que isso pode resolver seu problema:

private void move(Elemento e, int dir) { //dir seria +1 ou -1 para cima ou baixo na lista
	int i = suaLista.indexOf(e); //pega o indice da posição está o elemento selecionado
	if (i < 0 ) {
		return;
	}
	suaLista.remove(e); // remove ele dessa posição ps: isso já vai remontar as posições na lista
	suaLista.add(i + dir, e); // adiciona na posição + ou - 1
}

Abraço!

Conseguir atraves de javascript fazer os elementos se moverem pela lista na jsp.

<script type="text/javascript">
function addOption(selec, val, tex) {
	var opt = document.createElement('option');
     opt.value = val;
     opt.text = tex;
     try { selec.add(opt, null); } // NS/FF
     catch(e) { selec.add(opt); } // IE
  }

  function moveUP(selec) {
	var aux;
	var ind;
	if((selec.selectedIndex!=0) && (selec.selectedIndex!=null)){
		for(var i = 0; i < selec.options.length; i++) {
			if(selec.selectedIndex == i){
				aux = selec.options[i-1].innerHTML;
				selec.options[i-1].innerHTML = selec.options[selec.selectedIndex].innerHTML;
				selec.options[i].innerHTML = aux;
				ind = i-1;
			}
		}
		selec.selectedIndex = ind;
	}
}

function moveDOWN(selec) {
	var aux;
	var ind;
	if((selec.selectedIndex!=(selec.options.length-1)) && (selec.selectedIndex!=null)){
		for(var i = 0; i < selec.options.length; i++) {
			if(selec.selectedIndex == i){
				aux = selec.options[i+1].innerHTML;
				selec.options[i+1].innerHTML = selec.options[selec.selectedIndex].innerHTML;
				selec.options[i].innerHTML = aux;
			ind = i+1;
			}
		}
		selec.selectedIndex = ind;
	}
}
</script>

A dica do daniel é para usar na action, mas minha duvida é como vou pegar na action essa nova ordenação? Usando a dica do sergio, vou criar um campo Ordem no BO, e cada vez que mover um objeto na lista eu teria que mudar esse campo. Mas como farei isso? Ou como vou passar essa nova ordenação para a action?

É você teria que dar um refresh na lista pra força-a a atualizar seus valores de acordo com os novos, normalmente um ajax acionado no evento do + ou - pra subir ou descer o elemento na lista.

Mas beleza, se você conseguiu fazer não se esqueça de colocar [RESOLVIDO] no tópico!

Abraço boa sorte!