Página dinamica JSF2.0

Bom dia pessoal…

Estou com uma dúvida…

Ex: eu tenho um campo valor total … e outro campo…quantidade de parcelas…

Quando eu digitar a quantidade de parcelas… Ex: 3…

quero que apareça 3 texts para eu digitar o valor de cada parcela…

Alguém sabe como que eu faço??

ou alguém possui algum exemplo…procurei por pagina dinamica na internet mas não achei…

Não sei se estou procurando pelo titulo certo…

vlwww pela atenção!!

Voce vai conseguir esse efeito usando binding e criando seus componentes manualmente no MB quando tratar o evento.

hummm vlw pela dica Mayara…

mas tem algum exemplo que eu possa seguir??

Estou meio perdido…

obrigado!

acho que esse post pode te ajudar :wink:

Oba!

Muito obrigado!

Vou dar uma olhada depois eu posto caso eu consiga!!

Vlw pela atenção Mayara!!!

Voce pode resolver de quatro formas

ui:repeat
JSTL c:forEach
Binding como a MaYaRa_SaN
e Criando um componente customizado extendendo dos componentes default

Sugiro a primeira solução para coisas simples

hummm…

vou dar uma pesquisada sobre o ui:repeat então

vlw leonardo!

Vlw Mayara e Leonardo pela ajuda de vocês!

Resolvi o problema com o que aparentava ser mais simples! Então utilizei o ui:repeat

Segue código para quem precisar!

Página xhtml

<h:panelGrid columns="1" id="parcelas">
					<h:panelGroup>
						<ui:repeat value="#{pedidoBean.parcelas}" var="ped">
							<h:outputLabel value="Parcela #{ped}:" />
							<br/>
							<p:inputText >
								<f:convertNumber minFractionDigits="2" />
							</p:inputText>
							<br/>
						</ui:repeat>
					</h:panelGroup>
				</h:panelGrid>

Bean

public void criaText() {
		this.parcelas = new ArrayList<String>();
                int numeroParcelas = 3;
		for (int b = 1; b <= numeroParcelas; b++) {
			this.parcelas.add(String.valueOf(b));
		}
	}

Faltou essa parte da pagina que chama o método criaText()

xhtml

<p:inputText id="dias" required="true"
							requiredMessage="Dias úteis obrigatório" size="5"
							maxlength="5" value="#{pedidoBean.pedidoServico.qtdDiasUteis}" >
							<f:ajax execute="dias" render="pedido" event="blur" listener="#{pedidoBean.criaText}"></f:ajax>
						</p:inputText>

Agora só mais uma dúvida!

Com esses texts dinâmicos eu terei no máximo 18!

Esses dados terão que ser armazenados em algum lugar!

Pergunta:

Como vocês acham melhor eu salvar esses dados na base?

Crio uma tabela com 18 colunas e armazeno os valores, e os que não tiverem dados eu salvo como nulo??(minha pouca experiência diz ser meio porco)

ouuuu

sei la… =p

vlww!!!

Legal que voce conseguiu resolver de uma forma mais fácil =)

quanto aos dados, pode ser que agora tenham 18 no maximo, mas se num futuro isso mudar, o ideal é tentar deixar o mais flexível possível pra diminuir o impacto de uma mudança.

minha sugestão é voce ter uma tabela de parcelas que teria basicamente os dados:
idCompra
idParcela
valorParcela
valorPago(ou um boolean pra saber se esta pago ou nao)
dataVencimento

e outras informações que voce achar relevante…

[quote=Furlani]Agora só mais uma dúvida!

Com esses texts dinâmicos eu terei no máximo 18!

Esses dados terão que ser armazenados em algum lugar!

Pergunta:

Como vocês acham melhor eu salvar esses dados na base?

Crio uma tabela com 18 colunas e armazeno os valores, e os que não tiverem dados eu salvo como nulo??(minha pouca experiência diz ser meio porco)

ouuuu

sei la… =p

vlww!!![/quote]
Criar tabelas dessa forma é totalmente errado.

As parcelas estão ligadas a uma compra, nota fiscal, cliente ou algo assim, certo?
Esse relacionamento é de várias parcelas (no mínimo 1, a vista e no máximo 18, por enquanto) para 1 compra/nf/cliente.
Sendo assim, cada parcela pode receber uma FK da outra tabela com a qual ela se relaciona e, ainda, ter outras colunas, contendo, por exemplo, o número da parcela, se ela já foi paga, valor pago, entre outros
O ideal é que você crie uma tabela com a estrutura

id_parcela PK
id_compra (ou id_nf ou id_cliente ou id_o_que_voce_colocou_como_relacao) FK
data_vencimento
valor_parcela
data_pagamento
valor_pago (aqui, você pode colocar o valor padrão como -1, afinal, nenhuma parcela terá valor negativo, certo? Aí não precisa de um boolean para controlar as parcelas pagas, basta verificar se valor_pago > 0)

Com essas informações, você já consegue controlar as coisas, calcular juros, computar tempo em atraso, verificar clientes adimplementes e inadimplentes, etc.

Além destes, você pode inserir outras colunas, como desconto_concedido, por exemplo.

Por exemplo e se a parcela 1 e parcela 2 foram pagas e as outras não…
o valor das parcelas são distintos…

Vlw Mayara e drsmachado

fica mais facil para voce controlar o que foi pago, se foi dado desconto (valor da parcela != valor pago) se o cliente esta em débito a quantos dias…

voce consegue tirar muito informação se voce trabalhar nesse formato pois voce manipula parcela por parcela pois cada uma será um registro nessa tabela.

:wink:

aaaaaaaaaaaaaaaaaaa entendi…não tinha tido essa visão!

Cada parcela é um registro da tabela!!

Agora sim!!! Jah posso continuar com meu desenvolvimento!!!

muitoooo!!! obrigado a vcs pela ajuda!!!