Icefaces ace: dataTable ленивая загрузка - PullRequest
3 голосов
/ 09 марта 2012

Есть ли кто-нибудь, у кого есть небольшой пример ленивой загрузки с ace: dataTable? .. Я не могу понять, как реализовать метод загрузки класса LazyDataModel .. и как извлечь данные из базы данных с помощью этого метода..

спасибо!

Ответы [ 5 ]

4 голосов
/ 11 июля 2012

ace: dataTable уже имеет встроенный ленивый механизм загрузки в ICEFaces (по крайней мере для версии 3.x и выше).

Нет необходимостидля этого больше AbstractList .

Все, что вам нужно сделать, это добавить lazy = "true" к вашему тегу и убедитесь, что атрибут " value " указывает на класс, который расширяет LazyDataModel ... вам просто нужнореализовать там абстрактный метод, который принимает аргументы стартовой страницы, размера страницы, сортировки и фильтрации.

Также не забудьте использовать нумерацию страниц и определить размер страницы (атрибут «lines»).

Проверка: ICEFaces docs Ver.3 туза: dataTable

2 голосов
/ 18 октября 2016

Вот рабочий пример

myDataTableLazy.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ace="http://www.icefaces.org/icefaces/components"
xmlns:ice="http://www.icesoft.com/icefaces/component"
xmlns:icecore="http://www.icefaces.org/icefaces/core"> 
<h:head> 
<title>DataTable</title>  
</h:head> 
<h:body> 


   <h:form>
            <ace:dataTable id="carTable"
                       value="#{myDataTableLazy.lazyModel}"
                       var="car"   
                       rows="5"                    
                       paginator="true" 
                       lazy="true" >

                <ace:column id="exp" rendered="false">
                    <ace:expansionToggler />
                </ace:column>

                <ace:column headerText="Id">
                    <ice:outputText value="#{car.id}" />
                </ace:column>
                <ace:column headerText="Name">
                    <ice:outputText value="#{car.name}" />
                </ace:column>

        </ace:dataTable>


        <h:commandButton id="invio" value="Invio"    actionListener="#{myDataTableLazy.cicla}"  > 
         </h:commandButton>  

    </h:form> 

MyDataTableLazy

  package my;

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

  import javax.annotation.PostConstruct;
  import javax.faces.bean.ManagedBean;
  import javax.faces.bean.SessionScoped; 
  import javax.faces.event.ActionEvent;

  import org.icefaces.ace.model.table.LazyDataModel;
  import org.icefaces.samples.showcase.example.ace.dataTable.DataTableLazyLoading;
  import org.icefaces.samples.showcase.metadata.context.ComponentExampleImpl;

  @ManagedBean(name="myDataTableLazy")
  @SessionScoped
  public class MyDataTableLazy   implements Serializable { 

    private LazyDataModel<Car> lazyModel;

    @PostConstruct
      public void init() {
        lazyModel = new LazyCarDataModel();
      }

    public LazyDataModel<Car> getLazyModel() {
        return lazyModel;
    }

    public void setLazyModel(LazyDataModel<Car> lazyModel) {
        this.lazyModel = lazyModel;
    } 


     public void cicla(ActionEvent e)  { 

         List<Car> lista = (List<Car>) lazyModel.getWrappedData();

         for (Car car : lista) {
           System.out.println( car.getName() );
         } 

     }


  }

LazyCarDataModel

  package my;

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

  import org.icefaces.ace.model.table.LazyDataModel;
  import org.icefaces.ace.model.table.SortCriteria;

  public class LazyCarDataModel extends LazyDataModel<Car> {
    List<Car> carList;

    public LazyCarDataModel(){ 
        carList = new ArrayList<Car>();
        carList.add(new Car(1, "FiatLazy"));
        carList.add(new Car(2, "FerrariLazy"));
        carList.add(new Car(3, "PorscheLazy"));
        carList.add(new Car(4, "MaseratiLazy"));
        carList.add(new Car(5, "MercedesLazy"));
        carList.add(new Car(6, "BMWLazy"));
        carList.add(new Car(7, "ToyotaLazy"));
        carList.add(new Car(8, "FordLazy"));
        carList.add(new Car(9, "Alfa RomeoLazy"));
        carList.add(new Car(10, "SuzukiLazy"));
        carList.add(new Car(11, "RenaultLazy"));

        setRowCount(carList.size());
    }

    @Override
    public List<Car> load(int first, int pageSize, SortCriteria[] arg2, Map<String, String> arg3) {
        ArrayList list = new ArrayList<Car>();

        int initial = first;

        for (int i = initial; i < initial + pageSize && i < carList.size(); i++) {
            list.add(carList.get(i));
        }

        return list;
    }

  }
0 голосов
/ 19 октября 2016

Pheraps, это совершенно не по теме, но для демонстрации примеров: перейти к http://www.icesoft.org/java/downloads/icefaces-downloads.jsf

Вы можете выбрать ICEfaces 4.x ICEfaces 3.x ICEfaces 1.x вкладка

скачайте файл ICEfaces-x.x.0-bin.zip (вы регистрируетесь)

распакуйте и перейдите в папку, которую вы хотите скомпилировать, например, в командной оболочке, перейдите в ... \ ICEfaces-3.3.0-bin.zip \ ICEfaces-3.3.0-бен \ ICEfaces \ Samples \ витрина \ витрина

запустите команду (у вас должен быть maven): мвн пакет

вы найдете showcase.war в

\ ICEfaces-3,3,0-Bin \ ICEfaces-3.3.0-Bin \ ICEfaces \ Samples \ витрина \ витрина \ мишень

0 голосов
/ 16 марта 2012

Поскольку IceFaces Ace является копией / веткой PrimeFaces 2, могут помочь документы и примеры PrimeFaces.primefaces.org/showcase-labs/ui/datatableLazy.jsf

0 голосов
/ 15 марта 2012

ICEFaces ice / ace: DataTable внизу работает с собственными коллекциями Java. Доступ к данным позволяет получить доступ к элементам из вашей коллекции, просто вызвав метод get (idx) для вашей коллекции.

Я предлагаю вам изучить реализацию отложенной загрузки / разбиения на страницы на более низком уровне, например реализовать собственный java.util.AbstractList .

Начните с реализации своего абстрактного метода get () и отладки, чтобы понять, как работает функция обработки данных icefaces, или вы можете проверить источники ice / ace: dataTable ice / ace: dataPaginator.

...