[RESOLVIDO]JSF - Como criar o mesmo fragmento diversas vezes?

2 respostas
D

Opa :smiley:

Tenho uma tabela que o usuário pode incluir N veículos, montei tudo dentro do dataTable e cada vez que clico pra adicionar outro objeto, crio uma nova posição no array:

<h:dataTable value="#{profissional.profissionalBean.veiculos}" var="caminhao" id="tabelaVeiculos">
									<h:column>
										<table>
											<tr>
												<td class="fonteLabel">Marca:</td>
												<td width="243" class="fonteLabel"><h:inputText required="true" styleClass="campoTexto" id="marca" value="#{caminhao.marca}" disabled="#{profissional.desabilitarCampos}" style=" width : 230px;">
																						
																				  </h:inputText>
												</td>
												<td class="fonteLabel">Modelo:</td>
												<td class="fonteLabel"><h:inputText required="true" id="modelo" styleClass="campoTexto" value="#{caminhao.modelo}" style="height : 22px; width : 226px;" disabled="#{profissional.desabilitarCampos}"/>&nbsp;
																																																											
												</td>
											</tr>	
											<tr>
												<td class="fonteLabel">Ano:</td>
												<td width="243" class="fonteLabel"><h:inputText required="true" styleClass="campoTexto" id="ano" value="#{caminhao.ano}" disabled="#{profissional.desabilitarCampos}" style=" width : 230px;">
																						
																				  </h:inputText>
												</td>
												<td class="fonteLabel">Cor:</td>
												<td class="fonteLabel"><h:inputText required="true" id="cor" styleClass="campoTexto" value="#{caminhao.cor}" style="height : 22px; width : 226px;" disabled="#{profissional.desabilitarCampos}"/>&nbsp;
																																																											
												</td>
											</tr>
											<tr>
												<td class="fonteLabel">Placa:</td>
												<td width="243" class="fonteLabel"><h:inputText required="true" styleClass="campoTexto" id="placa" value="#{caminhao.placa}" disabled="#{profissional.desabilitarCampos}" style=" width : 230px;">
																						
																				  </h:inputText>
												</td>
												<td class="fonteLabel">Cidade Emplacamento:</td>
												<td class="fonteLabel"><h:inputText required="true" id="cidadeEmplacamento" styleClass="campoTexto" value="#{caminhao.cidadeEmplacamento}" style="height : 22px; width : 226px;" disabled="#{profissional.desabilitarCampos}"/>&nbsp;
																																																											
												</td>
											</tr>
											<tr>
												<td class="fonteLabel">Chassi n.:</td>
												<td width="243" class="fonteLabel"><h:inputText required="true" styleClass="campoTexto" id="chassi" value="#{caminhao.numeroChassi}" disabled="#{profissional.desabilitarCampos}" style=" width : 230px;">
																						
																				  </h:inputText>
												</td>
												<td class="fonteLabel">Renavan:</td>
												<td class="fonteLabel"><h:inputText required="true" id="renavan" styleClass="campoTexto" value="#{caminhao.renavan}" style="height : 22px; width : 226px;" disabled="#{profissional.desabilitarCampos}"/>&nbsp;
												</td>
											</tr>
											<tr>
												<td class="fonteLabel">Categoria:</td>
												<td width="243" class="fonteLabel"><h:inputText required="true" styleClass="campoTexto" id="categoria" value="#{caminhao.categoria}" disabled="#{profissional.desabilitarCampos}" style=" width : 230px;">
																						
																				  </h:inputText>
												</td>
												<td class="fonteLabel">Tipo do Ve&iacute;culo:</td>
												<td class="fonteLabel"><h:inputText required="true" id="tipoVeiculo" styleClass="campoTexto" value="#{caminhao.tipoVeiculo}" style="height : 22px; width : 226px;" disabled="#{profissional.desabilitarCampos}"/>&nbsp;
												</td>
											</tr>
											<tr>
												<td colspan="4"><br/>
													<a4j:region>
														<a4j:commandButton action="#{profissional.addVeiculo}" value="Adicionar Outro Caminhao"
														reRender="tabelaVeiculos" />
													</a4j:region>
												</td>
											</tr>
										</table>
									</h:column>
								</h:dataTable>

Este trecho acima é o que deveria ser recriado. No meu managed-bean, eu fiz o seguinte:

public void addVeiculo(){
		VeiculoBean veiculo = new VeiculoBean();
		veiculo.setProfissional(getProfissionalBean());
		veiculo = getProfissionalBean().getVeiculos().get(getProfissionalBean().getVeiculos().size() -1);
		getProfissionalBean().getVeiculos().add(veiculo);
		getProfissionalBean().getVeiculos().size();
		getProfissionalBean().getVeiculos().add(new VeiculoBean());
	}

Alguém sabe pq a dataTable não está sendo ‘recriada’? Pq qdo eu olho o tamanho do array, ele aumenta toda vez que eu clico.

[]'s

2 Respostas

rsakurai

Este seu mátodo addVeiculo está meio confuso, o que vc precisa fazer nele???

Porque na linha 2 vc cria uma VeiculoBean, ae na linha 3 vc preenche ele. Depois na linha 4 vc ignora o que vc fez na linha 2 e 3 pegando o objeto que estava na sua lisga getVeiculos… isso está meio confuso.

D

esquece…já resolvi…o problema estava no botão…foi só tirar ele de dentro do dataTable e resolveu

valeuu

Criado 14 de julho de 2008
Ultima resposta 14 de jul. de 2008
Respostas 2
Participantes 2