我有一个带有复选框列的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中遗漏了一些东西。
答案 0 :(得分:0)
没有使用过primefaces选择列,但是......
INMO你应该将所需的元素添加到selectedMensagens
中,selectedMensagens
应代表所选的行...,在服务器端执行该逻辑(例如,在@PostConstruct
中) ,如果dataModelMsg
中的某个元素符合条件,则应将其添加到selectedMensagens