2016-05-23 2 views
0

У меня проблема с получением данных для просмотра дерева. Сначала я извлекаю данные из службы impl, и у меня есть .zul, чтобы получить данные из служебного импа в .zul.База данных извлечения иерархии Java zk

это контроллер

package id.co.fifgroup.ims.controller; 

import java.util.List; 

import id.co.fifgroup.core.service.SecurityService; 
import id.co.fifgroup.ims.domain.Violence; 
import id.co.fifgroup.ims.service.ViolenceService; 

import org.zkoss.zk.ui.Component; 
import org.zkoss.zk.ui.select.annotation.Wire; 
import org.zkoss.zk.ui.select.annotation.WireVariable; 
import org.zkoss.zk.ui.util.GenericForwardComposer; 
import org.zkoss.zkplus.spring.SpringUtil; 
import org.zkoss.zul.ListModel; 
import org.zkoss.zul.ListModelList; 
import org.zkoss.zul.Window; 

public class ViolenceInquiryComposer extends GenericForwardComposer<Component> { 

    @Wire 
    private Violence violence; 

    @Wire 
    private Window winViolenceInquiry; 

    @WireVariable(rewireOnActivate = true) 
    private transient ViolenceService violenceServiceImpl = (ViolenceService) SpringUtil.getBean("violenceServiceImpl");; 

    @Override 
    public void doAfterCompose(Component comp) throws Exception { 
     super.doAfterCompose(comp); 
     initParentViolence(); 
    } 

    public ListModel<Violence> initParentViolence(){ 
     Violence violence = new Violence(); 
     return new ListModelList<Violence>(violenceServiceImpl.getViolence(1)); 

    } 

} 

ответ

1

Добро пожаловать в рамках ZK.

Я вижу, что у вас нет большого опыта в рамках, поэтому давайте начнем.
Прежде всего, ZK имеет 3 различных реализаций:

  • MVC, в свинг пути.
  • MVC, с композиторами.
  • MVVM.

Итак, первое, что нужно выбрать, как вы хотите идти.
Как с этой установкой, выглядит, как вы хотите MVC с композиторами, так что давайте начнем там:

@Wire 
private Violence violence; 

Если Violence не распространяется или реализовать какой-либо компонент ZK, это просто неправильно.
@Wire означает проводку вашего компонента zul для этого класса.

@Wire 
private Window winViolenceInquiry; 

Это правильно, если ваше окно имеет id="winViolenceInquiry".
Видите ли, у меня есть компонент в zul => Я делаю подключение к этому классу с помощью @Wire.

Теперь у вас должен быть определенный компонент в zul, как сетка, список или дерево.
Ничего не произойдет, если вы не примените свой ListModelList к этому компоненту.
Итак, первый шаг, объявляет компонент в zul.
Затем мы делаем соединение в классе java с @Wire. И как последний шаг в doAfterCompose мы делаем:

@Override 
public void doAfterCompose(Component comp) throws Exception { 
    super.doAfterCompose(comp); 
    myList.setModel(initParentViolence()); 
} 

Не забудьте добавить визуализатор или использовать тег шаблона в Зула, для того, чтобы знать, как правильно сделать его.

Теперь некоторые дополнительные пункты:

  1. Всегда старайтесь сделать свой ListModelList в качестве глобальной окончательной переменной.
    Причина очень проста, поскольку вы используете эту модель: изменения выполняются с помощью вызовов ajax, у которых только есть изменения в ней, установка нового ListModelList приведет к удалению всех отображаемых элементов и добавлению всех новых элементов снова, так что длинный ajax звонки и более тяжелые для клиентского ПК для рендеринга.

  2. Предлагаю вам проверить MVVM, так как это очень простой и быстрый способ кодирования, а кривая обучения быстрее, чем MVC.

  3. Попробуйте использовать SelectorComposer вместо , потому что последняя версия является «более старой», и вы можете сделать больше ошибок там. SelectorComposer также поддерживает CSS3-селектор, чтобы подключить ваши компоненты.

Смежные вопросы