2011-04-21 58 views
0

我有一個h:commandLink放置在p:dataTable中的列的問題。操作方法未被調用。我使用的是primefaces 2.21和jsf 2.0。 了這樣的代碼:commanLink不工作在p:dataTable

<ui:define name="center"> 
     <h:form id="form1"> 
      <p:dataTable id="userDataTable" 
       value="#{adminstratorBean.periodicalUsers}" var="user" 
       paginator="true" rows="10" 
       paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
       rowsPerPageTemplate="5,10,15"> 
       <f:facet name="header"> 
         Ajax Pagination 
        </f:facet> 
       <p:column> 
        <f:facet name="header"> 
         <h:outputText value="Id" /> 
        </f:facet> 
        <h:outputText value="#{user.id}"></h:outputText> 
       </p:column> 
       <p:column> 
        <f:facet name="header"> 
         <h:outputText value="Name" /> 
        </f:facet> 
        <h:outputText value="#{user.name}"></h:outputText> 

       </p:column> 
       <p:column> 
        <f:facet name="header"> 
         <h:outputText value="Password" /> 
        </f:facet> 
        <h:outputText value="#{user.password}"></h:outputText> 

       </p:column> 
       <p:column> 
        <f:facet name="header"> 
         <h:outputText value="Sex" /> 
        </f:facet> 
        <h:outputText value="#{user.sex}"></h:outputText> 

       </p:column> 
       <p:column> 
        <f:facet name="header"> 
         <h:outputText value="Email" /> 
        </f:facet> 
        <h:outputText value="#{user.mail}"></h:outputText> 

       </p:column> 
       <p:column> 
        <f:facet name="header"> 
         <h:outputText value="Phone" /> 
        </f:facet> 
        <h:outputText value="#{user.phone}"></h:outputText> 

       </p:column> 
       <p:column> 
        <f:facet name="header"> 
         <h:outputText value="Birthday" /> 
        </f:facet> 
        <h:outputText value="#{user.birthday}"> 
         <f:convertDateTime type="date"></f:convertDateTime> 
        </h:outputText> 
       </p:column> 
       <p:column> 
        <f:facet name="header"> 
         <h:outputText value="Delete" /> 
        </f:facet> 
        <h:commandLink value="#{msgs.delete}" 
         actionListener="#{adminstratorBean.deleteUser(user)}"> 
        </h:commandLink> 
       </p:column> 
      </p:dataTable> 
     </h:form> 
    </ui:define> 

package wls.bean; 

import java.io.Serializable; 
import java.util.List; 

import javax.ejb.EJB; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import javax.faces.event.ActionEvent; 

import org.primefaces.component.datatable.DataTable; 

import wls.entity.*; 
import wls.myEJB.*; 
@ManagedBean 
@SessionScoped 
public class AdminstratorBean implements Serializable{ 
    @EJB 
    CommonEJBLocal commonEJB; 
    @EJB 
    AdminstratorEJBLocal adminstratorEJB; 

    List<PeriodicalUser> periodicalUsers; 

    //Logic Method 
    public List<PeriodicalUser> getPeriodicalUsers() { 
     periodicalUsers = adminstratorEJB.listPeriodicalUser(); 
     return periodicalUsers; 
    } 

    public String deleteUser(PeriodicalUser selectedUser) { 
     System.out.println("DEledsfkjsdlkfjldkfjldsk"); 
     System.out.println(selectedUser.getName()); 
     adminstratorEJB.deletePeriodicalUser(selectedUser.getId()); 
     return null; 
    } 

回答

0

使用action,而不是actionListener

<h:commandLink value="#{msgs.delete}" 
    action="#{adminstratorBean.deleteUser(user)}"> 
</h:commandLink> 

actionListener不能與參數調用,旨在前使用業務邏輯被執行(在你的操作方法中)。

+0

我用'action'替換'actionListener',它仍然不起作用... – Raise 2011-04-22 15:31:12

+0

您的操作方法是否被調用?你能調試和設置一個斷點到方法中嗎? – 2011-04-22 15:43:11

0

你應該使用 <號碼:commandLink>時 而不是 < H:commandLink>時 裏面的時候 <號碼:dataTable>將。