Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / gxt ListView images from DataBase table column type bytea / 24 сообщений из 24, страница 1 из 1
31.03.2015, 11:39
    #38922139
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Добрый день!
Делаю ListView точь-в-точь из


Но у меня картинки из бд, в таблице с типом колонки bytea, и никакого пути нет.

Как загрузить из bytea (bytes[]) картинки в ListView?

Благодарю за помощь!
...
Рейтинг: 0 / 0
31.03.2015, 11:54
    #38922166
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Philip_StubbornНо у меня картинки из бд, в таблице с типом колонки bytea, и никакого пути нет.

Значит надо "картинки из бд" превратить в "пути". Например, с помощью Servlet и ServletResponse.getOutputStream();
...
Рейтинг: 0 / 0
31.03.2015, 11:56
    #38922170
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Blazkowicz,
То есть картинки физически (помимо бд) где-нибудь на диске должны существовать?
...
Рейтинг: 0 / 0
31.03.2015, 12:03
    #38922187
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Philip_Stubborn,

Если у вас клиент-сервера, то, вероятно, нет.
Хотя кеш между базой и клиентом в виде файлов не помешает.

Есть браузер, в котором работает GXT на JavaScript. Браузер и JavaScript читают данные по HTTP с сервера. А сервере уже по HTTP запросу определяет какой именно браузеру нужен файл и читает его откуда угодно. Пора бы уже такие основы понимать.
...
Рейтинг: 0 / 0
02.04.2015, 12:37
    #38924864
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Все сделал, и path (аж принудительно задал)

Код: html
1.
2.
3.
4.
<div class="{style.thumb}"><img
        src="file:////d:/myproject/project/src/com/grandprix/gpline/client/module/ipr/ViewPanel/ScreenShots/CarouselTest/images/Screenshot.bmp"
           title="{photo.name}"></div>
<span class="x-editable">{photo.name:shorten(18)}</span>



Этот же путь в браузер вставить - работает (открывается картинка), но вот в ListView нет
он не говорит, что он неправильный или не видит его, просто не показывает
...
Рейтинг: 0 / 0
02.04.2015, 12:42
    #38924874
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
ListView у меня точь-в-точь такой
Код: html
1.
http://www.sencha.com/examples/#ExamplePlace:listview
...
Рейтинг: 0 / 0
02.04.2015, 13:24
    #38924958
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Один вопрос:
если у меня .bmp большой файл (1.6М) - это может быть причиной того, что не открывается в ListView?
...
Рейтинг: 0 / 0
03.04.2015, 15:06
    #38926365
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Подскажите, друзья, пожалуйста,
Делаю так
Код: html
1.
2.
3.
4.
<div class="{style.thumb}"><img
        src="file:////d:/myproject/project/src/com/grandprix/gpline/client/module/ipr/ViewPanel/ScreenShots/CarouselTest/images/Screenshot.bmp"
           title="{photo.name}"></div>
<span class="x-editable">{photo.name:shorten(18)}</span>



изображение подхватывается,

а делаю так
Код: html
1.
2.
3.
4.
<div class="{style.thumb}"><img
        src="{photo.path}"
           title="{photo.name}"></div>
<span class="x-editable">{photo.name:shorten(18)}</span>



где photo.path = "file:////d:/myproject/project/src/com/grandprix/gpline/client/module/ipr/ViewPanel/ScreenShots/CarouselTest/images/Screenshot.bmp";

изображения нет.

Значения присваиваю здесь
Код: java
1.
2.
3.
4.
5.
6.
listView.setCell(new SimpleSafeHtmlCell<Photo>(new AbstractSafeHtmlRenderer<Photo>() {
        @Override
        public SafeHtml render(Photo object) {
          return renderer.renderItem(object, style);
        }
      }));
...
Рейтинг: 0 / 0
03.04.2015, 15:07
    #38926368
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Код самого класса
Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
public class ListViewExample implements IsWidget, EntryPoint {
 
  @FormatterFactories(@FormatterFactory(factory = ShortenFactory.class, name = "shorten"))
  interface Renderer extends XTemplates {
    @XTemplate(source = "ListViewExample.html")
    public SafeHtml renderItem(Photo photo, Style style);
  }
 
  interface Resources extends ClientBundle {
    @Source("ListViewExample.css")
    Style css();
  }
 
  static class Shorten implements Formatter<String> {
    private int length;
 
    public Shorten(int length) {
      this.length = length;
    }
 
    @Override
    public String format(String data) {
      return Format.ellipse(data, length);
    }
  }
 
  static class ShortenFactory {
    public static Shorten getFormat(int length) {
      return new Shorten(length);
    }
  }
 
  interface Style extends CssResource {
    String over();
 
    String select();
 
    String thumb();
 
    String thumbWrap();
  }
 
  private FramedPanel panel;
 
  @Override
  public Widget asWidget() {
    if (panel == null) {
      final ExampleServiceAsync rpcService = GWT.create(ExampleService.class);
 
      RpcProxy<Object, List<Photo>> proxy = new RpcProxy<Object, List<Photo>>() {
        @Override
        public void load(Object loadConfig, AsyncCallback<List<Photo>> callback) {
          rpcService.getPhotos(callback);
        }
      };
 
      Loader<Object, List<Photo>> loader = new Loader<Object, List<Photo>>(proxy);
 
      ModelKeyProvider<Photo> keyProvider = new ModelKeyProvider<Photo>() {
        @Override
        public String getKey(Photo item) {
          return item.getName();
        }
      };
 
      ListStore<Photo> store = new ListStore<Photo>(keyProvider);
       
      loader.addLoadHandler(new ListStoreBinding<Object, Photo, List<Photo>>(store));
      loader.load();
 
      final Resources resources = GWT.create(Resources.class);
      resources.css().ensureInjected();
 
      final Style style = resources.css();
 
      final Renderer renderer = GWT.create(Renderer.class);
 
      ListViewCustomAppearance<Photo> appearance = new ListViewCustomAppearance<Photo>("." + style.thumbWrap(),
          style.over(), style.select()) {
        @Override
        public void renderEnd(SafeHtmlBuilder builder) {
          String markup = new StringBuilder("<div class=\"").append(CommonStyles.get().clear()).append("\"></div>").toString();
          builder.appendHtmlConstant(markup);
        }
 
        @Override
        public void renderItem(SafeHtmlBuilder builder, SafeHtml content) {
          builder.appendHtmlConstant("<div class='" + style.thumbWrap() + "' style='border: 1px solid white'>");
          builder.append(content);
          builder.appendHtmlConstant("</div>");
        }
      };
 
      ListView<Photo, Photo> listView = new ListView<Photo, Photo>(store, new IdentityValueProvider<Photo>() {
        @Override
        public void setValue(Photo object, Photo value) {
        }
      }, appearance);
      listView.setCell(new SimpleSafeHtmlCell<Photo>(new AbstractSafeHtmlRenderer<Photo>() {
        @Override
        public SafeHtml render(Photo object) {
          return renderer.renderItem(object, style);
        }
      }));
      listView.getSelectionModel().addSelectionChangedHandler(new SelectionChangedHandler<Photo>() {
        @Override
        public void onSelectionChanged(SelectionChangedEvent<Photo> event) {
          panel.setHeadingText("Simple ListView (" + event.getSelection().size() + " items selected)");
        }
      });
      listView.setBorders(false);
 
      final ListViewSelectionModel<Photo> selectionModel = listView.getSelectionModel();
 
      SimpleComboBox<String> comboType = new SimpleComboBox<String>(new StringLabelProvider<String>());
      comboType.setTriggerAction(TriggerAction.ALL);
      comboType.setEditable(false);
      comboType.setWidth(100);
      comboType.add("Multi");
      comboType.add("Simple");
      comboType.setValue("Multi");
      comboType.addSelectionHandler(new SelectionHandler<String>() {
        @Override
        public void onSelection(SelectionEvent<String> event) {
          boolean simple = event.getSelectedItem().equals("Simple");
          selectionModel.deselectAll();
          selectionModel.setSelectionMode(simple ? SelectionMode.SIMPLE : SelectionMode.MULTI);
        }
      });
 
      ToolBar toolBar = new ToolBar();
      toolBar.add(new LabelToolItem("Selection Mode: "));
      toolBar.add(comboType);
 
      VerticalLayoutContainer vlc = new VerticalLayoutContainer();
      vlc.setBorders(true);
      vlc.add(toolBar, new VerticalLayoutData(1, -1));
      vlc.add(listView, new VerticalLayoutData(1, 1));
 
      panel = new FramedPanel();
      panel.setCollapsible(true);
      panel.setAnimCollapse(false);
      panel.setId("images-view2");
      panel.setHeadingText("Simple ListView (0 items selected)");
      panel.setPixelSize(555, 400);
      panel.setBodyBorder(false);
      panel.add(vlc);
      panel.addStyleName("margin-10");
    }
 
    return panel;
  }
 
  @Override
  public void onModuleLoad() {
    RootPanel.get().add(asWidget());
  }
 
}
...
Рейтинг: 0 / 0
06.04.2015, 16:24
    #38928273
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Уважаемые друзья, абонент просит ответить ему как только вы увидите данное сообщение ))
Очень надо )
...
Рейтинг: 0 / 0
06.04.2015, 16:28
    #38928282
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Philip_StubbornУважаемые друзья, абонент просит ответить ему как только вы увидите данное сообщение ))
Очень надо )

Мозг отказывается понимать проблему, когда она решается вот таким способом:
Код: html
1.
src="file:////d:/myproject/project/src/com/grandprix/gpline/client/module/ipr/ViewPanel/ScreenShots/CarouselTest/images/Screenshot.bmp"
...
Рейтинг: 0 / 0
06.04.2015, 16:45
    #38928309
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Blazkowicz,
Код: html
1.
2.
3.
4.
<div class="{style.thumb}"><img
        src="thumbs/Screenshot.jpg"
           title="{photo.name}"></div>
<span class="x-editable">{photo.name:shorten(18)}</span>



Если перейти в IntelliJ Idea для обзора, изображение прорисовывается,
А в ListView крестик
...
Рейтинг: 0 / 0
06.04.2015, 16:53
    #38928329
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Philip_Stubborn,
Да я сам не понимаю, в одном случае работает, в другом - нет
...
Рейтинг: 0 / 0
06.04.2015, 17:06
    #38928364
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Blazkowicz,
Какое-нибудь решение Вы предложить можете?
...
Рейтинг: 0 / 0
06.04.2015, 17:11
    #38928374
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Philip_StubbornКакое-нибудь решение Вы предложить можете?
Научится пользоваться консолью разработчика в браузерах, чтобы видеть не успешные запросы, их адрес и т.п. проблема на клиентской стороне.
...
Рейтинг: 0 / 0
11.04.2015, 13:05
    #38933760
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Добрый день, друзья мои!

при настройке cell ListView
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
  listView.setCell(/*new IconCellDecorator<String>(AppBundle.IMAGE.userIcon16(), new ImageCell()*/
            new SimpleSafeHtmlCell<InfoPerimetr>(new AbstractSafeHtmlRenderer<InfoPerimetr>() {
                @Override
                public SafeHtml render(InfoPerimetr object) {
                    //ZSafeUri path = new ZSafeUri(object.getPath());
                  //  object.setPath(Images.INSTANCE.image1().getSafeUri().asString());
                    object.setPath(AppBundle.IMAGE.alert16().getSafeUri().asString());
                    return renderer.renderItem(object, style);



И при вставке в html код
Код: java
1.
2.
3.
4.
5.
6.
7.
 interface Renderer extends XTemplates {
        @XTemplate("<div class=\"{style.thumb}\"><img\n" +
                "        src = \"{photo.path}\"\n" +
                "           title=\"{photo.name}\"></div>\n" +
                "<span class=\"x-editable\">{photo.name:shorten(18)}</span>"/*source = "ListViewExample.html"*/)
        public SafeHtml renderItem( InfoPerimetr photo, Style style);
    }



у меня адрес (photo.path) почему-то становится = "#" (src = "#"), хотя при отладке я вижу, что он равен

Код: java
1.
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABjUlEQVR42mNgoCWYP3++wKpVq/jJ0tzX16fr7eGxFogXz546VZMkzfX19Uxurs5tnu6urz3dXF+6uThVz5w5k5V4A2pqvFwcHI67Ojr+BWEg+0BHR4c7UZrLypJ4nWxsljvZ2rwE4gtOtrYXgfRzRxurufX1BQIEDbA2M8uxtTC/ZWVi/A8mBmLbmpvfsDE3z8arOTY0VNHSyOgoUMMfdANAYpYmRnsyk5LUcRpgqqcz1UxP7425gf4/dANAYmb6eq9N9fQmYtXs6eTkZKSledtYW+uvsY4WhgEgMbCcluaV8IAATxTNxsbGrHpqqnv01VW/Gair/QNhoKb/UKeD2TBxkBo9VZUdoZaWnHADzPR1MrSV5F/rKCv+BeJ/IIzuApg4SI22ssJTbSXZQqAUI4OalJSIuqz0fQ05md8a8jL/NOVl/4NodAOQ5YBq/wD13NRQkFBgUJYUn6EiJf5dVUrin6o0GP8H01JoGE0OqOczEK9kUBIX+QbEv4H4DxD/JRL/ger5yQD2B/mYAQBT5LascwtAdwAAAABJRU5ErkJggg==
...
Рейтинг: 0 / 0
11.04.2015, 13:09
    #38933763
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Код: html
1.
2.
3.
<div class="com-grandprix-gpline-client-module-ipr-ViewPanel-ScreenShots-CarouselTest-ListViewExample-Style-thumb"><img
        src = "#"
           title="Screenshot.jpg"></div><span class="x-editable">Screenshot.jpg</span>
...
Рейтинг: 0 / 0
20.04.2015, 12:31
    #38940501
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Друзья, подскажите, пожалуйста, как из Image(path) получить такой url

Код: java
1.
http://127.0.0.1:8888/gplineGray/F05875D5AC30C184BE65444655BA6F77.cache.bmp
...
Рейтинг: 0 / 0
20.04.2015, 14:05
    #38940609
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Я сейчас с ума сойду

Подскажите, пожалуйста, можно ClientBundle сделать динамическим, то есть задать ImageSource не в папке исходников, а например с диска C:\ или же с временной папки проекта?

Пожалуйста, друзья, ответьте
...
Рейтинг: 0 / 0
20.04.2015, 14:49
    #38940663
YamahaR1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Philip_Stubborn,

Посмотрите тут если я вас правильно понял, т.е. прописывать путь через @Source аннотацию...
...
Рейтинг: 0 / 0
20.04.2015, 15:26
    #38940712
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
YamahaR1,
Это я видел, к сожалению, не то.
Там уже зарезервированный путь к изображению, а мне нужно динамически их подгружать, то есть их до компиляции нет, они появляются при определенном действии после запуска программы во временной папке самого проекта, не в папке исходников.
...
Рейтинг: 0 / 0
20.04.2015, 15:33
    #38940724
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Можно ли кешировать изображение в режиме runtime, чтоб его можно было использовать в аннотации @Source или как-то по-другому
...
Рейтинг: 0 / 0
20.04.2015, 17:51
    #38940912
YamahaR1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Philip_StubbornYamahaR1,
Это я видел, к сожалению, не то.
Там уже зарезервированный путь к изображению, а мне нужно динамически их подгружать, то есть их до компиляции нет, они появляются при определенном действии после запуска программы во временной папке самого проекта, не в папке исходников.

Вот тут еще посмотритe http://stackoverflow.com/questions/16312736/gwt-how-to-dynamically-load-a-new-image
правда тут для GWT, но возможно применимо и в GXT
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
28.02.2018, 18:16
    #39608673
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gxt ListView images from DataBase table column type bytea
Кому будет нужно, если столкнетесь с такой проблемой,
проблему отображения картинок в listview решается, задав uriPath =

http://127.0.0.1:8888/gplineGray/pic.ex
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / gxt ListView images from DataBase table column type bytea / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]