Problemas , mesmo value. <h:SelectOneMenu>

6 respostas
lccezinha

bom gente essa é minha primeira postagem no forum, meu nome é Luiz e curso Analise e Desenvolvimento de Sistemas… eis meu problema.
Estou criando uma aplicação de sistema de vendas de ingresso usando JSF/Hibernate/RichFaces.
Bem, quando o cliente acessa a pagina ele visualizará uma lista de todos os eventos disponiveis, utilizei um commandLink que quando clicado irá adicionar o evento solicitado a uma listaEventos ( eventos selecionados para a compra ) esses eventos são adicionados em um ArrayList :

ele adiciona certo , até a tranquilo, o problema vem agora… o usuario pode ter tanto um evento adicionado a lista, como vários… e para cada evento adicionado e exibida uma nova lista com os dados do ArrayList anterior, e um campo com um <h:selectOneMenu value=“meubean.compra.nIngressos”> e um calcular Sub-Total, cada evento pode tem um numero de ingressos diferente e um subtotal diferente tambem, obvio, mas o problema é que quando eu adiciono dois eventos a lista, se eu selecionar 3 ingressos no segundo, e manda calcular o subtotal , ele usa essa mesmo value para todos os outros itens da lista.

pedi ajuda ao meu professor, e ele falou que é pq eu to usando sempre a mesma propriedade no value, minha duvida maior é, como faço para que esse value sempre use uma ‘nova propriedade’ numero de ingressos selecionados ?

desculpe tamanho do post , mas tentei ser o mais claro.
grato a quem ajuda.

<h:column> <h:selectOneMenu value="#{compraHandler.compra.lugaresComprados}"> <f:selectItem itemValue="1" itemLabel="1"/> <f:selectItem itemValue="2" itemLabel="2"/> <f:selectItem itemValue="3" itemLabel="3"/> <f:selectItem itemValue="4" itemLabel="4"/> <f:selectItem itemValue="5" itemLabel="5"/> <f:selectItem itemValue="6" itemLabel="6"/> <f:selectItem itemValue="7" itemLabel="7"/> <f:selectItem itemValue="8" itemLabel="8"/> <f:selectItem itemValue="9" itemLabel="9"/> <f:selectItem itemValue="10" itemLabel="10"/> </h:selectOneMenu> </h:column>

<h:commandLink actionListener="#{compraHandler.adicionarIngresso}">
 <h:outputText value="Comprar Ingresso..."></h:outputText>
 <f:param id="idParaAdicionar" value="#{e.idevento}"></f:param>
</h:commandLink>
public void calcularSubTotal(ActionEvent evt){
		Long idEvento = getIdByParamenter(evt,"idDoEvento"); //pega o id do evento
		evento = daoEvento.load(idEvento); //carrega o evento 
		Double subTotal = evento.getValor() * this.compra.getLugaresComprados(); //eventoValor * lugares marcados pelo selectOneMenu.
		System.out.println(subTotal);
	}

6 Respostas

lccezinha

alguem por favor! :}

Gerson_da_S_Lima

É isso mesmo, a mesma propriedade no value.

O que acontece é que você deveria ter uma lista de eventos e montar os combos baseados nesta lista, cada item da lista é um evento diferente, o qual deve possuir um atributo número de ingressos.

Ajudou?

lccezinha

na real eu tenho uma lista de eventos .
os eventos a cada clique são adicionados numa lista ‘-’ , se é que é isso que você quis dizer;

evento = daoEvento.load(id); //captura o id e carrega o evento. if(!this.listaEventos.contains(evento)){ this.listaEventos.add(evento); //add na lista. System.out.println("Adicionando evento..."); }else{ System.out.println("não foi adicionado"); }

os lugares marcados no combo, então sendo ‘referenciados’ a uma propriedade no meu pojo de compra ; pelo que tu disse, os ingressos marcados devem estar em uma propriedade no meu evento ?
seria isso ?

vlw por responde.

Gerson_da_S_Lima

é isso mesmo.

lccezinha

Ok, grato pela ajuda, vou tentar resolver isso :wink:

se mais alguem tiver uma sugestão ou ideia, fico muito granto.

lccezinha

eu ainda não tentei implementar essa solução, mas creio que o problema vai continuar ;

na classe responsavel por manipular todas as ações da compra ’ CompraHandler ’ , eu tenho o seguinte;

public class CompraHandler { private Evento evento = new Evento(); private Compra compra = new Compra();

e na minha pagina eu já tentei trocar o compraHandler.compra.lugaresComprados , por compraHandler.evento.lugaresComprados, mas o resultado foi o mesmo …
como eu faria pra toda vez que fosse adicionado um item, ele criar um novo obj evento ? pq do jeito que ta o problema continua.

grato!

Criado 16 de novembro de 2010
Ultima resposta 18 de nov. de 2010
Respostas 6
Participantes 2