Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
3 / 3 / 2
Регистрация: 05.12.2011
Сообщений: 51

MVC, несколько моделей на одной view

20.05.2016, 11:50. Показов 953. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Столкнулся с такой проблемой. Делаю веб-приложение - что-то типа веб-интерфейса для бд (вывод всех записей, одной по id, вставка, обновление).
БД состоит из нескольких таблиц: shop, region, city, ... . Для каждой - свой класс-модель (MVC). Также завел отдельный класс, поля которого - объекты моих классов-моделей, выглядит этот класс примерно так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class CompositeDTO {
    private City city;
    private Shop shop;
    private Region region;
    
    public CompositeDTO() {}
    public CompositeDTO(City city, Shop shop, Region region) {
        setCalls(calls);
        setCity(city);
        setShop(shop);
        setRegion(region);
    }
//getters and setters ...
}
Теперь я не совсем понимаю, как вывести получившийся list<CompositeDTO> в jsp - ругается, что "Property 'shop_ID' not found on type ru.my-project.dto.CompositeDTO", что, в принципе, логично, но как исправить, не врубаюсь.

Вот так выбираю их базы:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static List<CompositeDTO> getAllShops(Connection conn) throws SQLException {
      String sql = "{call GET_ALL_SHOPS}";
      CallableStatement cs = conn.prepareCall(sql);
      ResultSet rs = cs.executeQuery();
      List<CompositeDTO> list = new ArrayList<CompositeDTO>();
      
      while (rs.next()) {
          int shop_ID = rs.getInt("shop_ID");
          String address = rs.getString("address");
          String reg_name = rs.getString("reg_name");
          String city_name = rs.getString("city_name");
          
          Shop shop = new Shop ();
          Region region = new Region();
          City city = new City();
          
          shop .setShop _ID(obj_ID);
          shop .setAddress(address);
          region.setRegion_name(reg_name);
          city.setCity_name(city_name);
                  
          CompositeDTO compositeDTO = new CompositeDTO(city, shop, region);
          list.add(compositeDTO);       
      }
      return list;
  }
doGEt контроллера getShopList.java, где и происходит вызов метода:
Java
1
2
3
4
5
6
7
8
9
10
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException {
        Connection conn = MyUtils.getStoredConnection(request);
          List<CompositeDTO> list = null; 
        try {
            list = getAllShops(conn);
        } catch (SQLException e) {
            e.printStackTrace();
        }
}
Мне представляется, что нужно сделать какую-то обработку списка именно в контроллере, но какую? Или у меня в принципе неправильный подход и надо как-то по-другому? (сделать надо без фреймворков)

Буду благодарен за любой толчок в верном направлении.

Добавлено через 57 минут
Уточню: данные из таблицы я вывожу через jstl примерно так:
Java
1
2
3
4
5
6
7
8
<c:forEach items="${shops}" var="row">
          <tr>
            <td>${row.shop_ID}</td> 
            <td>${row.address}</td>    
            <td>${row.city_name}</td>
            <td>${row.reg_name}</td>
          </tr>
</c:forEach>
Код метода getShopListAll.java:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException {
        Connection conn = MyUtils.getStoredConnection(request);
          List<CompositeDTO> list = null; 
        try {
            list = getAllShops(conn);
        } catch (SQLException e) {
            e.printStackTrace();
        }
   request.setAttribute("shops", list);
         
        RequestDispatcher dispatcher = request.getServletContext().getRequestDispatcher("/WEB-INF/views/shopListAll.jsp");
        dispatcher.forward(request, response);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.05.2016, 11:50
Ответы с готовыми решениями:

Список и форма в одной View-ке MVC 5
Есть модель проектов, я хочу в одной вьюхе вывести список данных из базы и так же в модальной окне форму добавления в эту же таблицу,...

Несколько ng-view на одной странице
Здравствуйте подкажите пожалуйста, как реализовать несколько ng-view на одной и той же странице, например в одном блоке будет &lt;div...

Несколько таймеров(часов) на одной странице (MVC)
Добрый вечер, реализую несколько часов на одной странице ( с MVC подходом ). В модели содержится методы запуска каждого таймера...

2
18 / 18 / 10
Регистрация: 28.08.2015
Сообщений: 44
20.05.2016, 14:04
Java
1
2
3
List<CompositeDTO> list = null;
...
request.setAttribute("shops", list);
В результате в shops хранится список CompositeDTO
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class CompositeDTO {
    private City city;
    private Shop shop;
    private Region region;
    
    public CompositeDTO() {}
    public CompositeDTO(City city, Shop shop, Region region) {
        setCalls(calls);
        setCity(city);
        setShop(shop);
        setRegion(region);
    }
//getters and setters ...
}
А здесь вы из CompositeDTO пытаетесь получить shop_ID, address, city_name, reg_name
Java
1
2
3
4
5
6
7
8
<c:forEach items="${shops}" var="row">
          <tr>
            <td>${row.shop_ID}</td> 
            <td>${row.address}</td>    
            <td>${row.city_name}</td>
            <td>${row.reg_name}</td>
          </tr>
</c:forEach>
таких полей в CompositeDTO нет
Чтобы получить эти поля нужно писать что-то типа такого:
Java
1
${row.shop.shop_ID}
1
3 / 3 / 2
Регистрация: 05.12.2011
Сообщений: 51
20.05.2016, 14:36  [ТС]
Moptemap, огромное спасибо, конкретно такого варианта я не пробовал )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.05.2016, 14:36
Помогаю со студенческими работами здесь

Можно ли передать несколько View во View
Вопрос новичка можно ли передать несколько View во View ? Дело в том что мне нужно передать перечисление одной таблицы во View и...

MVC: CRUD подобное API для моделей – best practices?
Доброго времени суток! Долго думал куда постить – в &quot;PHP и ООП&quot; или &quot;Для начинающих&quot; ибо вопрос может быть очень простым и...

asp.net mvc 2 проект, работает без контроллеров и моделей. Такое возможно?
Здравствуйте. Я новичек в MVC. Есть чужой проект, в нем не было файла проекта (sln, csproj). Создал новый проект, добавил туда все...

javascript во View MVC
Добрый день не подскажите почему не выполняется javascript функции применительно к img Пишу вот так &lt;script...

View в FrontController + MVC
Доброго времени суток. Возник такой вопрос. Допустим, есть блог с возможностью просмотра одной записи, списка записей (рубрики) и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru