Como pegar o valor de um selectitems?

Galera tenho um <p:selectManyCheckbox> assim

<p:selectManyCheckbox id="ProvaSelecao" widgetVar="ProvaSelecao" value="#{inscricaoController.provasSelecionadas}" layout="pageDirection" required="true" requiredMessage="Campo prova: o valor é necessário."> <f:selectItems value="#{inscricaoController.listarProvasDisponiveis()}" var="prova" itemValue="#{prova.id}" itemLabel="#{prova.data} - #{prova.nome}"></f:selectItems> </p:selectManyCheckbox>

Preciso validar no banco cada check que o usuario click, para saber se ele ja selecionou essa prova antes.
Tem como fazer isso ?
Alguem pode me dar uma ideia ou um exemplo ?
Obrigado

você vai precisar implementar um valueChangeListener pra esse componente, e a cada alteração pode fazer o que quiser.

Já implementou algum antes?

Ainda nao fiz nada. to começando agora com javaEE jsp e hibernate … usando o primefaces !
queria se nao for pedir muito um exemplo .
Obrigado pela ajuda !

[code]@ManagedBean
public class InscricaoController{

public void meuValueChangeListener(ValueChangeEvent event){
    /* Aqui é um método normal, você pode acessar o banco aqui, 
     * mas lembre-se que ele será executado SEMPRE que o valor do componente for alterado
     */
}

}[/code]
e no seu componente associa ele assim:

<p:selectManyCheckbox id="ProvaSelecao" widgetVar="ProvaSelecao" 
    value="#{inscricaoController.provasSelecionadas}" layout="pageDirection" 
    required="true" requiredMessage="Campo prova: o valor é necessário."
    valueChangeListener="#{inscricaoController.meuvalueChangeListener}">    
    <f:selectItems  value="#{inscricaoController.listarProvasDisponiveis()}" var="prova" 
        itemValue="#{prova.id}" itemLabel="#{prova.data} - #{prova.nome}">
    </f:selectItems>  
</p:selectManyCheckbox>

Você já experimentou olhar a demo do primefaces, com ele você consegue fazer tudo isso da uma olhada como exemplo tem esse código aqui:

[code]<h:form>

<p:selectCheckboxMenu value="#{formBean.selectedMovies}" label="Movies">  
    <f:selectItems value="#{formBean.movies}" />  
</p:selectCheckboxMenu>  

<p:separator style="margin-bottom:10px"/>  

<p:commandButton value="Submit" update="display" oncomplete="dlg.show()" />  

<p:dialog header="Selected Movies" modal="true" showEffect="fade" hideEffect="fade" widgetVar="dlg" resizabled="false">  
    <p:dataList id="display" value="#{formBean.selectedMovies}" var="movie">  
        #{movie}  
    </p:dataList>  
</p:dialog>  

</h:form> [/code]

e no seu bean

[code]import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class FormBean implements Serializable {

private List<String> selectedMovies;  

private Map<String,String> movies;  

public FormBean() {  
    movies = new HashMap<String, String>();  
    movies.put("Scarface", "Scarface");  
    movies.put("Goodfellas", "Goodfellas");  
    movies.put("Godfather", "Godfather");  
    movies.put("Carlito's Way", "Carlito's Way");  
}  

public List<String> getSelectedMovies() {  
    return selectedMovies;  
}  
public void setSelectedMovies(List<String> selectedMovies) {  
    this.selectedMovies = selectedMovies;  
}  

public Map<String, String> getMovies() {  
    return movies;  
}  

} [/code]

você só vai precisar usar a annotation @Named no seu bean se não me engano ela é do primefaces ou do jsf 2.

humm ja tinha olhado no primeface mas nao tinha encontrado nada que me ajudasse
Agora vou testar esse codigo do digaoneves e ver se consigo.
Deis de ja agradeço a ajuda de voces vlw mesmo digaoneves .

Buenas pessoal.

Estou tendo um problema parecido. O exemplo do primefaces funciona que é uma beleza, porém quando tento usar um List de um Bean qualquer, mesmo criando um converter não funciona.

Não gera erro nem nada, não sei o que fazer.

Segue meu código jsf:

<h:form>    
    <p:selectManyCheckbox value="#{testeMB.selectedPessoas}" label="Pessoas"  converter="pessoaConverter">    
        <f:selectItems value="#{testeMB.pessoas}" var="pessoa" itemLabel="#{pessoa.nome}" itemValue="#{pessoa}" />
    </p:selectManyCheckbox>    

    <p:separator style="margin-bottom:10px"/>    

    <p:commandButton value="Submit" update="display2" oncomplete="dlg2.show()" />    

    <p:dialog header="Selected Pessoas" modal="true" showEffect="fade" hideEffect="fade" widgetVar="dlg2" resizabled="false">    
        <p:dataList id="display2" value="#{testeMB.selectedPessoas}" var="pessoa">    
            #{pessoa.nome}    
        </p:dataList>    
    </p:dialog>    

</h:form>

E do meu ManagedBean:

@ManagedBean
@ViewScoped
public class TesteMB implements Serializable {
    private List<Pessoa> selectedPessoas;
    private List<Pessoa> pessoas;

    public TesteMB() {
        pessoas = new ArrayList<Pessoa>();
        pessoas.add(new Pessoa(1, "Pessoa 1"));
        pessoas.add(new Pessoa(2, "Pessoa 2"));
        pessoas.add(new Pessoa(3, "Pessoa 3"));
    }

    public List<Pessoa> getPessoas() {
        return pessoas;
    }

    public void setPessoas(List<Pessoa> pessoas) {
        this.pessoas = pessoas;
    }

    public List<Pessoa> getSelectedPessoas() {
        return selectedPessoas;
    }

    public void setSelectedPessoas(List<Pessoa> selectedPessoas) {
        this.selectedPessoas = selectedPessoas;
    }

}

Desde já obrigado

Eu estou com um problema parecido, não consigo recupera os itens selecionados.
Ele não entra no método.

<p:fieldset id="filtroGrafico" legend="Filtro" toggleable="true" collapsed="true" toggleSpeed="100" rendered="#{linhaAction.grafico.temFiltro}"> <!-- <c:forEach items="#{linhaAction.grafico.mapFiltroKey}" var="filtroKey"> --> <p:selectCheckboxMenu value="#{linhaAction.filtro}" valueChangeListener="#{linhaAction.meuvalueChangeListener}" label="uf" filter="true" filterText="Filter" filterMatchMode="startsWith" panelStyle="width:210px;heigth:70px; margin-left :70px; font-size:12px"> <f:selectItems value="#{linhaAction.grafico.mapFiltro['uf']}" /> </p:selectCheckboxMenu> <!-- </c:forEach> --> <p:commandButton id="filtrarGrafTabel" icon="ui-icon-search" title="Filtrar" action="#{linhaAction.aplicaFiltro}" update="linear, graficoTabela" /> </p:fieldset>

Bean

public void meuValueChangeListener(ValueChangeEvent event){ System.out.println("lister"); }

E meu list com os selecionados fica vazio.

[code]public List getFiltro() {
return filtro;
}

public void setFiltro(List<String> filtro) {
	this.filtro = filtro;
}[/code]

robsonperassoli, estou tendo o mesmo problema, você conseguiu resolver esse caso?

Cara o problema foi contornado de outra forma, não consegui resolve.

como você fez?

cara usei outro componente, agora não lembro mais.
Esse projeto foi congelado.