Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите, плиз, с заполнением GRID на ZK, Помогите, плиз, с заполнением GRID на ZK 
:(
    Опции темы
Wadim401978
Дата 1.10.2013, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 1.10.2013

Репутация: нет
Всего: нет



Доброго времени суток!

Есть две таблицы «Работники»(Workers) и «Задачи работников» (WorkerTasks). Связаны как «один к многим» (Поле Worker таблицы WorkerTasks – это внешний ключ связи с таблицей Worker (по id)). С созданием и заполнением особых проблем нет – в трейс получается вывести корректный результат и с помощью критериев гиберната, и с помощью HQL, и с помощью обыкновенных SQL-запросов Проект делаю на Maven в IDE Eclipse. Проблема возникла, когда дошла очередь до интерфейса, который по заданию необходимо сделать на ZK.
А сделать с помощью ZK интерфейса нужно следующее: список работников поместить в разворачивающийся список Listbox, а задачи в таблицу Grid. При селекте работника, таблица заполняется задачами только выбранного (селектом в Listbox-е) работника. При смене работника соответственно меняется заполнение таблицы.
Для решения задачи я создал файл интерфейса index.zul и java-class WorkerController. Попытался реализовать интерфейс с помощью MVC. Все сначал шло хорошо – заполнился listbox при загрузке index.zul. Правда, я не понял – как сделать selected (элемент списка по умолчанию). Ответ на этот вопрос мне интересен, но это – второстепенный вопрос.
Главный вопрос связан с применением метода setModel. При попытке его применить к таблице Grid (она у меня обозвана workerListbox) возникает ошибка NPE. Как я понял с форумов всяких этих англосаксов, такое явление объясняется тем, что моя Grid workerListbox имеет значение null.
Я – новичок в java и ZK, поэтому мне сложно представить себе – каким должно быть значение у идентификатора типа Grid (да, собственно и других типов – listbox, combobox и т.д.) и как его установить в значение, отличное от null??? Может я вообще, концептуально неправ – мне стоит изменить подход к реализуемой модели? В этом случае все равно взываю о помощи – помогите советом или указанием.

Вот мой index.zul (его целевая часть)

Код

            <tabpanel>

                <window id="TaskTitle" title="Планирование задач сотрудника"
                    border="normal" width="280px" apply="my.workers.zk.WorkerController">

                    <hbox pack="center" align="top" width="100%" height="80px">
                        <style src="/widgets/css/html.css" />
                        <div height="50px" width="443px" class="combodivarea">
                            <separator spacing="10px" />
                            <label value="Сотрудник" class="boxlabel" />

 
                            <listbox id="cmbwoker1" model="${TaskTitle$composer.workerList}"
                                mold="select" width="150px">
                                <template name="model">
                                    <listitem label="${each}" id="${each.id}" />
                                </template>
                            </listbox>


                        </div>

                    </hbox>

                </window>

                <separator height="30px"></separator>

                <window id="TaskTable" border="normal" width="800px"
                    apply="my.workers.zk.WorkerController">
                    Таблица задач

                    <grid height="300px" model="${TaskTable$composer.workertaskList}" emptyMessage="No found in the result">
                        <columns>
                            <column label="Задача"/>
                            <column label="дата нач." />
                            <column label="ДатаКон" />
                        </columns>
                        <template name="model">
                            <row>
                                <label value="${each.task.description}" />
                                <label value="${each.dateBeg}" />
                                <label value="${each.dateEnd}" />
                                <textbox />
                            </row>
                        </template>
                    </grid>

                </window>

            </tabpanel>






Мой WorkerController

Код

package (чемодан творчества рук моих);

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

import (мое творчество);

import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zkplus.spring.SpringUtil;
import org.zkoss.zul.Grid;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;


public class WorkerController extends SelectorComposer<Component> {
    
    private static final long serialVersionUID = 8243942703081449079L;
    
    private WorkersDao workServ = (WorkersDao) SpringUtil.getBean("workersDao");
    private WorkerTasksDao worktaskServ = (WorkerTasksDao) SpringUtil.getBean("workerTasksDao");
   
    
    private ListModelList<Workers> workerList = new ListModelList<Workers>(workServ.findAll());
    private ListModel<WorkerTasks> workertaskList;
    
    List<WorkerTasks> wtArray = new ArrayList<WorkerTasks>();
      
    @Wire
    private Listbox cmbwoker1;
    
    
    @Wire
    private Grid workerListbox = null;
     

    public ListModel<Workers> getWorkerList() {
        return workerList;
    }

    
    public ListModel<WorkerTasks> getWorkertaskList() {
        return workertaskList;
    }

    @Listen("onSelect = #cmbwoker1")
    public void changeCmbwoker1() {
        
        
        Set<Workers> selection = ((ListModelList)cmbwoker1.getModel()).getSelection();
        Workers worker1 = selection.iterator().next();

        
        workertaskList = new ListModelList<WorkerTasks>(wtArray);
        List<WorkerTasks> wtList = worktaskServ.findAllByWorker(worker1);
        for (WorkerTasks wtItem : wtList) {
            wtArray.add(wtItem);
        }
        

        workerListbox.setModel(workertaskList);
        
          
    }
    
}



Заранее, спасибо!

Это сообщение отредактировал(а) Wadim401978 - 1.10.2013, 23:07
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0388 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.