Как установить элементы в сетке vaadin, когда элементы находятся на карте - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь загрузить использовать этот запрос и значения в карту

LinkedHashMap<SCRegionPriority, String> hash = new LinkedHashMap<>();
pstmt=("SELECT a.Id,a.RegionName,ISNULL(b.Priority,0) as priority 
      FROM dbo.region a left join dbo.SCMap b on a.Id = b.RegionId 
      and a.CountryId = b.CountryId and b.SCId=1 where a.CountryId ='1'")
ResultSet rs = pstmt.executeQuery();
con.commit();
    while (rs.next()) {
            SCPri c = new SCPri();
            c.setRegionid(rs.getInt(1));
            c.setRegionname(rs.getString(2));
            c.setPriority(rs.getInt(3));
            hash.put(c, String.valueOf(rs.getInt(3)));
        }

запрос дает мне следующие значения:

1,0 | 2,1| 3,1 | 4,2 | ...

А потом я пытаюсь загрузить это в сетку vaadin следующим образом:

     List<HashMap<SCPri, String>> rows = new ArrayList<>();
     LinkedHashMap<SCPri, String> fakeBean1 = subdao1.getSCMap(subcontractor.getId(),subcontractor.getCountryId());
     rows.add(fakeBean1);
     Grid<HashMap<SCPri, String>> grid2 = new Grid<>();
     grid2.setItems(rows);

     for (Map.Entry<SCPri, String> entry : s.entrySet()) {
         grid2.addColumn(h -> h.get(entry.getKey().getRegionname())).setCaption(entry.getKey().getRegionname());
     }
     addComponents(grid2);

Я не могузагрузить сетку с динамически генерируемыми столбцами и одной редактируемой строкой со значениями под этими столбцами.Я пытаюсь сделать сетку похожей на следующую:

r1|r2|r3|r4
0 |1 |1 |2

Я пытался перейти по следующим двум ссылкам, но не смог заставить ее работать:

Как этого добиться?

1 Ответ

0 голосов
/ 23 ноября 2018

Одна строка с пустыми ячейками означает, что обратный вызов поставщика значений для каждой ячейки возвращает null (или "").

В вашем случае обратный вызов поставщика значений равен h -> h.get(entry.getKey().getRegionname()).Здесь h представляет объект строки, то есть ваш единственный экземпляр HashMap<SCPri, String>.Я предполагаю, что getRegionname() возвращает что-то вроде String, что наверняка приведет к null результатам из h.get(), поскольку h использует SCPri экземпляры в качестве ключа.Изменение обратного вызова на h -> h.get(entry.getKey()) вместо этого может сделать свое дело.

К сожалению, из прежних времен, Map::get принимает любой Object без ошибок компиляции вместо того, чтобы требовать передачи экземплярафактического типа ключа карты.

...