p:dataTable - 删除行后刷新数据表

sam*_*ira 3 java jsf java-ee primefaces jsf-2

以下是我的数据表pic,我希望当我删除一行时,数据表刷新.但是从DB中删除了行,但之后没有从数据表中删除. 在此输入图像描述 我尝试下面的代码,但他们无法帮助我.

<h2>?????? ??????? ?????</h2>   
 <h:form id="f2" prependId="false">  

    <p:dataTable id="pdataTable" var="personel" value="#{personelMB.personelList}" rowKey="#{personelMB.personel_id}"
    >  

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

        <p:column>  
            <f:facet name="header">  
               ????? ??????  
            </f:facet>  

            <h:outputText value="#{personel.personel_id}" />  

            <f:facet name="footer">  
                ????? 
            </f:facet>  
        </p:column>  

        <p:column headerText="???">  
            <h:outputText value="#{personel.pname}" />  
        </p:column>  

        <p:column headerText="??? ????????">  
            <h:outputText value="#{personel.pfamily}" />  
        </p:column>  

        <p:column headerText="????">  
            <h:outputText value="#{personel.paddress}" />  
        </p:column>  
   <p:column headerText="????">  
            <h:outputText value="#{personel.pphone}" />  
        </p:column>
        <p:column>
      <f:facet name="???">
         <h:outputText value="" />
      </f:facet>
      <p:commandButton icon="ui-icon-close" title="???"
                       actionListener="#{personelMB.deletePersonel(personel.personel_id)}" update="pdataTable"/>
   </p:column>
        <f:facet name="footer">  
            ????? ?????#{fn:length(personelMB.getPersonelList())} ??????.  
        </f:facet>  

    </p:dataTable>  

</h:form> 
Run Code Online (Sandbox Code Playgroud)

第二次尝试:

<p:commandButton icon="ui-icon-close" title="???"
 actionListener="#{personelMB.deletePersonel(personel.personel_id)}" reRender="pdataTable"/>
                   </p:column>
Run Code Online (Sandbox Code Playgroud)

3.third try:personelBean.java

public void deletePersonel(int personel_id){
        Personel personel=(Personel)personelservice.getPersonelId(personel_id);
        getPersonelservice().deletePersonel(personel);
    }
    public String deleteAction(Personel personel) {
        personelList.remove(personel);
        return null;
      }
Run Code Online (Sandbox Code Playgroud)

xhtml文件

<p:commandButton icon="ui-icon-close" title="???"
                       actionListener="#{personelMB.deletePersonel(personel.personel_id)}" action="#{personelMB.deleteAction(personel)}"/>
   </p:column>
Run Code Online (Sandbox Code Playgroud)

请帮我.

sam*_*ira 6

而不是ajax是假的,这是真的.

actionListener="#{personelMB.deletePersonel(personel.personel_id)}"  update="@form" ajax="true"/>
Run Code Online (Sandbox Code Playgroud)

  • `ajax ="true"`是默认值,所以这个答案在这方面不是**正确的.真正的问题是`reRender`应该改为`update`.所以社区的变化让答案变得更糟...... (2认同)