[RESOLVIDO] Checkbox venha selecionado no DataTable Primefaces

7 respostas
A

Nao consigo fazer que no evento do SelectOneMenu venha selecionado os checkbox do dataTable

<h:form id="formPerfilTela" method="post">
		
	<h:panelGrid id="panelPerfilTela" columns="2" cellpadding="5">

							<h:outputLabel 		value="#{msg['sce.label.perfil']}" />
							<h:selectOneMenu 	id="Perfil"
												style="width:170px;"
												value="#{perfilTelaBean.perfilTela.perfil}"
												converter="simpleEntityConverter" 
												onchange="submit()"
												valueChangeListener="#{perfilTelaBean.pesquisaPerfilTela}"
												immediate="true" >

								<c:selectItem 	itemLabel="#{msg['sce.select.perfil']}"
												itemValue="" 
												noSelectionOption="true" />

								<c:selectItems 	value="#{perfilTelaBean.perfis}" 
												var="perfil"
												itemLabel="#{perfil.nomePerfil}" 
												itemValue="#{perfil}" />
								
							</h:selectOneMenu>

							<h:outputLabel 		value="#{msg['sce.label.telas.acessada.perfil']}" />

						</h:panelGrid>

						<fieldset>
							<legend>
								<h:outputLabel 	value="#{msg['sce.legend.telas.existentes']}" />
							</legend>
							
							<p:outputPanel autoUpdate="true" layout="block" id="panelTabela">
							
							<p:dataTable 		id="tblPerfilTela"
												value="#{perfilTelaBean.perfisTelas}"
												var="t"
												selection="#{perfilTelaBean.selecionados}"
												rowKey="#{t.tela.idTela}">
										
								<p:column headerText="#{msg['sce.selecionar']}" selectionMode="multiple" style="width:70px;text-align:center;">
									
								</p:column>

								<p:column >

									...

								</p:column>

							</p:dataTable>
							
							</p:outputPanel>
							
						</fieldset>

						<center>

							<h:panelGrid columns="2" cellspacing="10">

								<p:commandButton 	id="btnCadastrar" 
													styleClass="btnConfirm"
													value="#{msg['sce.button.incluir.alterar']}" 
													type="submit"
													ajax="false"
													actionListener="#{perfilTelaBean.incluiAltera}"
													update="formPerfilTela" />

							</h:panelGrid>
							
						</center>

					</h:form>

quando clico “btnCadastrar” os checkbox sao selecionados <<<

:?:

Porem no evento do selectOneMenu nada ocorre <<

@ManagedBean
@RequestScoped
public class PerfilTelaBean extends AbstractBean {

public void pesquisaPerfilTela(ValueChangeEvent event) throws IOException, ServletException {
		
		Perfil perfil = (Perfil) event.getNewValue();
		
		if(perfil != null ){
			
			perfilTela		 = new PerfilTela();
			
			perfilTela.setPerfil(perfil);
			
			listaPerfilTelas = new ArrayList<PerfilTela>();
			
			listaPerfilTelas.clear();
			
			try {
				
				listaPerfilTelas = (List<PerfilTela>) perfilTelaService.searchPerfilTela( perfilTela );
				
				perfisTelas = new PerfilTelaDataModel(listaPerfilTelas);
				
				int occurs = 0;
				
				for(PerfilTela pt : perfisTelas)					
					if(pt.getTela().getSelecionada())
						occurs++;
				
				selecionados = new PerfilTela[occurs];
				
				occurs = 0;
				
				for(PerfilTela pt : perfisTelas)					
					if(pt.getTela().getSelecionada())
						selecionados[occurs++] = pt;
				
				
			} catch (BusinessException e) {
				
				log.info(e);

			} catch (Exception e) {

				log.error("Erro do Sistema", e);
				
			}
		}
	}

}

Segue imgs da aplicação

Ajuda Por Favor

7 Respostas

M

se voce está usando o primefaces, porque nao usa o componente dele?

http://www.primefaces.org/showcase-labs/ui/selectOneMenu.jsf

A
MaYaRa_SaN:
se voce está usando o primefaces, porque nao usa o componente dele?

http://www.primefaces.org/showcase-labs/ui/selectOneMenu.jsf

Seguindo os conselhos

<p:selectOneMenu 	id="Perfil"
												style="width:170px;"
												value="#{perfilTelaBean.perfilTela.perfil}"
												converter="simpleEntityConverter" 
												onchange="submit()"
												valueChangeListener="#{perfilTelaBean.pesquisaPerfilTela}">

								<c:selectItem 	itemLabel="#{msg['sce.select.perfil']}"
												itemValue="" 
												noSelectionOption="true" />

								<c:selectItems 	value="#{perfilTelaBean.perfis}" 
												var="perfil"
												itemLabel="#{perfil.nomePerfil}" 
												itemValue="#{perfil}" />
								
							</p:selectOneMenu>

Porem na mesma ... continua do mesmo jeito ... :cry:

M

acho que precisamos voltar um passo ehehehe

o que faz o evento que voce colocou no selectOneMenu?

vc quer mudar outro componente a partir da escolha no selectOneMenu?

M

aqui tem um exemplo clássico de combos carregados de acordo com escolha anterior.

http://www.codesample.co/2011/08/combo-cidade-uf-com-primefaces-e-jsf-2/

A

MaYaRa_SaN:
acho que precisamos voltar um passo ehehehe

o que faz o evento que voce colocou no selectOneMenu?

vc quer mudar outro componente a partir da escolha no selectOneMenu?

MaYaRa_SaN:
aqui tem um exemplo clássico de combos carregados de acordo com escolha anterior.

http://www.codesample.co/2011/08/combo-cidade-uf-com-primefaces-e-jsf-2/

O problema esta mais na parte apos o evento do SelectOneMenu que este evento ele popula o dataTable, e ai esta o problema que os checkbox do dataTable que deveriam vir marcados nao estao vindo.

O fato é quando eu clico no batao “btnCadastrar” os checkbox sao selecionados nao sei se é pelo fato do evento do botao ser diferente do evento do selectOneMenu … :?:

A

Consegui resolver esse problema!!! :)

Obrigado, a MaYaRa_SaN graça ao blog que vc me passou que consegui resolver mais esse ...

ta aew a solução

xhtml

<p:selectOneMenu 	id="Perfil"
												style="width:170px;"
												value="#{perfilTelaBean.perfilTela.perfil}"
												converter="simpleEntityConverter" >

								<c:selectItem 	itemLabel="#{msg['sce.select.perfil']}"
												itemValue="" />

								<c:selectItems 	value="#{perfilTelaBean.perfis}" 
												var="perfil"
												itemLabel="#{perfil.nomePerfil}" 
												itemValue="#{perfil}" />
								<!-- A ação quem faz é o ajax e o update é feito no panelGrid, nao funcionou quando o update foi no dataTable -->
								<p:ajax event="change" listener="#{perfilTelaBean.changePerfilTela}" update="panelTabela" />
								
							</p:selectOneMenu>

                                                      <h:panelGrid id="panelTabela">
							
							    <p:dataTable 		id="tblPerfilTela"
												value="#{perfilTelaBean.perfisTelas}"
												var="t"
												selection="#{perfilTelaBean.selecionados}"
												rowKey="#{t.tela.idTela}">
										
								<p:column headerText="#{msg['sce.selecionar']}" selectionMode="multiple" style="width:70px;text-align:center;">
									
								</p:column>

								<p:column >
                                                                     ....
								</p:column>

							   </p:dataTable>
							
							</h:panelGrid>

Bean

public void changePerfilTela(){
		
		if(perfilTela.getPerfil() != null ){
		
			pesquisaPerfilTela( perfilTela.getPerfil() );
			
		} else {
			
			perfisTelas = null;
			
		}
	}

Obrigado mesmo, ja to de ferias .... :lol:

M

Legal!

boas ferias :wink:

Criado 27 de dezembro de 2011
Ultima resposta 27 de dez. de 2011
Respostas 7
Participantes 2