使用CheckBox jsf的DataTable

时间:2013-04-03 19:24:16

标签: jsf-2 primefaces

我有一个带有复选框列的dataTable。来自dataTable的数据我加载了数据库。到目前为止,一切进展顺利。我需要在某种情况下出现一些标记的复选框,就像我这样做?

关注dataTable代码:

<p:dataTable id="dataTable" var="valor" 
                        style="width:100%; text-align:center"
                        value="#{beanMensagemXContato.dataModelMsg}"
                        paginator="true" rows="5"  
                        paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                        rowsPerPageTemplate="5,10,15"
                        selection="#{beanMensagemXContato.selectedMensagens}">



                        <f:facet name="header">  
                            Mensagens  
                        </f:facet>  

                        <p:column selectionMode="multiple" style="width:5%">

                        </p:column>                     

                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="Código" />
                            </f:facet>
                            <h:outputText value="#{valor.idtMensagem}" />
                        </p:column>

                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="Mensagem" />
                            </f:facet>
                            <h:outputText value="#{valor.nomMensagem}" />
                        </p:column>

                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="Descrição" />
                            </f:facet>
                            <h:outputText value="#{valor.desMensagem}" />
                        </p:column>

                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="Configurador" />
                            </f:facet>
                            <h:outputText value="#{valor.indConfigurador}" />
                        </p:column>
                    </p:dataTable>

在下面的代码正确加载列表之前,屏幕只显示一个选定的记录。

listaMsgContato = consultaContatoEmail.listarMensagensAssociadas(selectedConsulta.getIdtContato());
        int l=0;
        int tamanho = listaMsgContato.size();
        selectedMensagens = new Mensagem[tamanho];
        for(int i=0; i<listaMsgContato.size(); i++){            
            for(int j=0; j<listaMsg.size();j++){
                System.out.println("Lista Msg Contato: " + listaMsgContato.get(i).getIdtMensagem() + " - Lista Msg: " + listaMsg.get(j).getIdtMensagem());
                if((long)listaMsgContato.get(i).getIdtMensagem()==(long)listaMsg.get(j).getIdtMensagem()){
                    System.out.println("Entrou");
                    //Fazer o selectedMensagens receber os valores.
                    selectedMensagens[l]=listaMsg.get(j);                   
                    l++;    
                }
            }           
        }

我认为你在我的xhtm中遗漏了一些东西。

1 个答案:

答案 0 :(得分:0)

没有使用过primefaces选择列,但是......

INMO你应该将所需的元素添加到selectedMensagens中,selectedMensagens应代表所选的行...,在服务器端执行该逻辑(例如,在@PostConstruct中) ,如果dataModelMsg中的某个元素符合条件,则应将其添加到selectedMensagens