Richfaces 4 datatable rowclick не работает с методом слушателя - PullRequest
0 голосов
/ 29 марта 2011

Я переношу приложение с richfaces 3 на 4. И я застрял в таблице данных.

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>

Поддерживающий компонент

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 Ответ

1 голос
/ 21 июня 2011

Удалите это <a4j:ajax event="rowclick" listener="#{customerBean.makeRowEditable}"> </a4j:ajax>, если вы используете richfaces 4!

...