2011-03-29 30 views
0

我正在將應用程序從richfaces 3遷移到4.並且我卡在數據表中。Richfaces 4 datatable rowclick未觸及偵聽器方法

rowclick向服務器發送請求並呈現響應,但不調用偵聽器方法。它甚至沒有評估這種方法。我曾嘗試給出一個不存在的方法名稱,但它在運行時也不會抱怨。我正在使用Richfaces 4.0.0 CR1庫。

任何人都有線索,請幫助我。

這是我的數據表代碼。

<rich:dataTable id="customersTable" 
    value="#{customerBean.customerList}" 
     var="customer" 
     rowKeyVar="rowKey"> 
      <a4j:ajax event="rowclick" 
        listener="#{customerBean.makeRowEditable}"> 
      </a4j:ajax> 
     <rich:column> 
      <f:facet name="header">Id</f:facet> 
      #{customer.id} 
     </rich:column> 

     <rich:column> 
      <f:facet name="header">Name</f:facet> 
      #{customer.name} 
     </rich:column> 
</rich:dataTable> 

的支持bean

package myapp; 


import java.util.ArrayList; 
import java.util.List; 

import javax.faces.event.AjaxBehaviorEvent; 
import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

public class CustomerBean { 

    protected Log log = LogFactory.getLog(this.getClass()); 
    private List<Customer> customerList; 
    private Customer selectedCustomer; 

    public CustomerBean() { 
     log.warn("CustomeBean is instantiated." + this); 

     this.customerList = new ArrayList<CustomerBean.Customer>(); 
     customerList.add(new Customer(1, "One")); 
     customerList.add(new Customer(2, "Two")); 
     customerList.add(new Customer(3, "Three")); 
     customerList.add(new Customer(1, "Four")); 
    } 

    public List<Customer> getCustomerList() { 
     return customerList; 
    } 

    public void setCustomerList(List<Customer> customerList) { 
     this.customerList = customerList; 
    } 

    public Customer getSelectedCustomer() { 
     return selectedCustomer; 
    } 

    public void setSelectedCustomer(Customer selectedCustomer) { 
     this.selectedCustomer = selectedCustomer; 
    } 

    public void makeRowEditable(AjaxBehaviorEvent event) { 
     log.warn("CustomerBean. makeRowEditable: "); 
    } 

    public void selectCustomer(Customer customer) { 
     this.selectedCustomer = customer; 
     log.warn("CustomerBean. selectCustomer: customer = " + customer); 
    } 


    public void unselectCustomer() { 
     log.warn("CustomerBean. unselectCustomer: "); 
     this.selectedCustomer = null; 
    } 


    public class Customer { 
     private int id; 
     private String name; 

     public Customer() { 
     } 

     public Customer(int id, String name) { 
      this.id = id; 
      this.name = name; 
     } 

     public int getId() { 
      return id; 
     } 

     public void setId(int id) { 
      this.id = id; 
     } 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 
    } 
} 

任何幫助表示讚賞:)

回答

1

刪除此 <a4j:ajax event="rowclick" listener="#{customerBean.makeRowEditable}"> </a4j:ajax> 如果您使用RichFaces的4!