Мне нужно отобразить список изображений с галереей прайдов, но я не могу [дублировать]

В C ++ объект производного класса может быть назначен объекту базового класса, но другой способ невозможен.

class Base { int x, y; };

class Derived : public Base { int z, w; };

int main() 
{
    Derived d;
    Base b = d; // Object Slicing,  z and w of d are sliced off
}

Обрезка объектов происходит, когда объект производного класса присваивается базе объект класса, дополнительные атрибуты объекта производного класса вырезаются для формирования объекта базового класса.

30
задан BalusC 21 August 2013 в 13:39
поделиться

6 ответов

Вы должны иметь в виду, что компонент graphicImage отображается на странице. Он отображает элемент HTML <img>. В браузере запрос будет сделан для страницы JSF, а затем последующие запросы будут выполняться и для каждого изображения на странице.

Эти изображения поступают из сервлета ресурсов PrimeFaces, а не FacesServlet, это означает, что область действия управляемого компонента и его свойства, вероятно, неприменимы.

Попробуйте сначала загрузить блоб в массив байтов, затем это, вероятно, начнет работать.

EDIT: см. мой следующий ответ на этот похожий вопрос. графическое изображение не рендерит streamedcontent в Primefaces

52
ответ дан Community 21 August 2018 в 10:29
поделиться
  • 1
    Спасибо за ответ, но согласно моему описанию выше изображение уже байт [] – Gonzalo Garcia Lasurtegui 9 April 2012 в 16:37
  • 2
    Не могли бы вы показать, как должен выглядеть ImageService? – John 3 May 2016 в 07:04
  • 3
    @John: это только ваш сервис / класс DAO, который возвращает ваш объект Image. Как он выполняет свою работу (JPA, JDBC, Hibernate, независимо) не представляет интереса для JSF. – BalusC 3 May 2016 в 07:06
52
ответ дан Community 1 November 2018 в 04:42
поделиться

mmm I 99% уверен, что <p:graphicImage не работает с ui: повторите, у вас будет много проблем с этим (потому что я сделал XD), я рекомендую вам создать сервлет и служить изображениям в качестве входного потока (там есть много примеров).

-2
ответ дан Daniel 21 August 2018 в 10:29
поделиться

Я не понимаю, зачем вам это нужно. Вы можете просто создать сервлет, который получит изображение из базы данных с отображением «/images/yourimage.jpg».

Вот быстрый учебник с соответствующим кодом в нем о том, как это сделать.

JSF - отображение изображений из базы данных в JSF

3
ответ дан Ilya Sidorovich 21 August 2018 в 10:29
поделиться
  • 1
    Да, это разумное решение, в частности для решений для SEO. – feder 25 June 2015 в 10:59

Спасибо BalusC. Я сделал это, установив целое число в бэк-компоненте и присвоив ему значение diffent при обновлении ByteArray для изображения. Это целое число служит уникальным идентификатором изображения. Затем я устанавливаю это целое число как значение <f:param> в <p:graphicImage> на странице.

тег изображения выглядит как

 <p:graphicImage value="#{empBean.image}">
    <f:param name="id" value="#{empBean.imageId}" />
  </p:graphicImage>`

и устанавливает изображение в фоновом режиме как

 if(user.getPicture()!=null){
        imageId = (int) new Date().getTime();
        BinaryStreamImpl bs = new BinaryStreamImpl(user.getPicture());  
//picture is byte[] property in user class      
        this.image =   new DefaultStreamedContent(bs.getInputStream(), "image/png");
    }

Теперь он работает хорошо.

3
ответ дан imdzeeshan 21 August 2018 в 10:29
поделиться
InputStream is = new ByteArrayInputStream((byte[]) yourBlobData);
myImage = new DefaultStreamedContent(is, "image/png");

на странице jsf;

<p:graphicImage value="#{controller.myImage}" style="width:200px;width:500px" />
0
ответ дан Serdari 21 August 2018 в 10:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: