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


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

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

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

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

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

Есть браузер, в котором работает GXT на JavaScript. Браузер и JavaScript читают данные по HTTP с сервера. А сервере уже по HTTP запросу определяет какой именно браузеру нужен файл и читает его откуда угодно. Пора бы уже такие основы понимать.
...
Рейтинг: 0 / 0
gxt ListView images from DataBase table column type bytea
    #38924864
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все сделал, и 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
gxt ListView images from DataBase table column type bytea
    #38924874
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ListView у меня точь-в-точь такой
Код: html
1.
http://www.sencha.com/examples/#ExamplePlace:listview
...
Рейтинг: 0 / 0
gxt ListView images from DataBase table column type bytea
    #38924958
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Один вопрос:
если у меня .bmp большой файл (1.6М) - это может быть причиной того, что не открывается в ListView?
...
Рейтинг: 0 / 0
gxt ListView images from DataBase table column type bytea
    #38926365
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, друзья, пожалуйста,
Делаю так
Код: 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
gxt ListView images from DataBase table column type bytea
    #38926368
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код самого класса
Код: 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
gxt ListView images from DataBase table column type bytea
    #38928273
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые друзья, абонент просит ответить ему как только вы увидите данное сообщение ))
Очень надо )
...
Рейтинг: 0 / 0
gxt ListView images from DataBase table column type bytea
    #38928282
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_StubbornУважаемые друзья, абонент просит ответить ему как только вы увидите данное сообщение ))
Очень надо )

Мозг отказывается понимать проблему, когда она решается вот таким способом:
Код: html
1.
src="file:////d:/myproject/project/src/com/grandprix/gpline/client/module/ipr/ViewPanel/ScreenShots/CarouselTest/images/Screenshot.bmp"
...
Рейтинг: 0 / 0
gxt ListView images from DataBase table column type bytea
    #38928309
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
gxt ListView images from DataBase table column type bytea
    #38928329
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_Stubborn,
Да я сам не понимаю, в одном случае работает, в другом - нет
...
Рейтинг: 0 / 0
gxt ListView images from DataBase table column type bytea
    #38928364
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Какое-нибудь решение Вы предложить можете?
...
Рейтинг: 0 / 0
gxt ListView images from DataBase table column type bytea
    #38928374
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_StubbornКакое-нибудь решение Вы предложить можете?
Научится пользоваться консолью разработчика в браузерах, чтобы видеть не успешные запросы, их адрес и т.п. проблема на клиентской стороне.
...
Рейтинг: 0 / 0
gxt ListView images from DataBase table column type bytea
    #38933760
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, друзья мои!

при настройке 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
gxt ListView images from DataBase table column type bytea
    #38933763
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
gxt ListView images from DataBase table column type bytea
    #38940501
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Друзья, подскажите, пожалуйста, как из Image(path) получить такой url

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

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

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

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

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

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


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