[RESOLVIDO] Checkbox venha selecionado no DataTable Primefaces

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

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

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

[quote=MaYaRa_SaN]se voce está usando o primefaces, porque nao usa o componente dele?

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

Seguindo os conselhos

[code]<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> [/code]

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

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?

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/

[quote=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?[/quote]

[quote=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/[/quote]

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 … :?:

Consegui resolver esse problema!!! :slight_smile:

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

ta aew a solução

xhtml

[code] <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>

[/code]

Bean

[code] public void changePerfilTela(){

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

[/code]

Obrigado mesmo, ja to de ferias … :lol:

Legal!

boas ferias :wink: