2016-08-01 7 views
3

Так что я пытаюсь добиться того, что используется мое изображение по умолчанию из библиотеки ресурсов, когда атрибут value не может ссылаться на правильное изображение (например, изображение не загружено/нет изображения в базе данных).GraphicImage: Как использовать образ по умолчанию, если атрибут value возвратит значение null?

Просто визуализировать его:

Пользователь не предоставил профайле, так bean.icon должен быть null.

<o:graphicImage value="#{bean.icon}" dataURI="true" /> (null isn't allowed as return value) 

Теперь я хотел бы компонент graphicImage для отображения по умолчанию вместо, семантический говорят:

<o:graphicImage name="img/default.png" dataURI="true" /> 

Можно ли добиться этого в элегантном способе, возможно, без использования JavaScript?

ответ

3

Не через <o:graphicImage> Компонент. Однако вы можете достичь этого в компоненте с помощью утилиты Faces#getResourceAsStream().

public InputStream getIcon() { 
    InputStream input = yourIconService.getIconAsInputStreamSomehow(); 
    return (input != null) ? input : Faces.getResourceAsStream("/resources/img/default.png"); 
} 
+0

Вау! Большое спасибо за быстрый ответ. Попробуем это и примите ваш ответ как можно скорее. – Snu

+0

@BalusC Как я могу сделать то же самое в pазмецах? Лица, упомянутые выше, находятся в пакете утилиты omnifaces – dirai

+0

@BalusC Plz также можете посмотреть этот https://stackoverflow.com/questions/48860434/why-file-exists-does-not-work. Я пытаюсь достичь аналогичной вещи, в которой я проверяю, существует ли файл (файл изображения, конкретный, но обобщенный для сообщения вопроса), тогда я буду выполнять дальнейшие действия. Однако, как указано в комментариях к этому Вопросу, файл существует в vfs (папке развертывания сервера, на котором выполняется webapp), и поэтому всегда возвращает false. Любая помощь будет большой. благодаря – dirai