I was wondering if and how it is possible to display an
as thumbnail inside a
. To be more precise, I wan
For exactly this reason, OmniFaces 2.5 introduced the #{of:graphicImageURL()}
EL function. This works only if your ImageBean
is annotated with @GraphicImageBean
.
import org.omnifaces.cdi.GraphicImageBean;
@GraphicImageBean
public class ImageBean {
// ...
}
<h:outputLink value="#{of:graphicImageURL('imageBean.getFirstImage(article, false)')}">
<o:graphicImage value="#{imageBean.getFirstImage(article, true)}" dataURI="true" height="80" />
</h:outputLink>
See also the @GraphicImageBean showcase.
Update: to be clear, you need a converter for non-standard types such as Article
. Why such a converter is needed and how to create it is detailed in Conversion Error setting value for 'null Converter'. If you create a @FacesConverter(forClass=Article.class)
, then the OmniFaces GraphicImage
will automatically pickup it.
In your particular case it's however more efficient to just pass the identifier to the image streamer method right away, this saves an additional conversion step. Provided that your Article
object has an id
property, here's how:
<h:outputLink value="#{of:graphicImageURL('imageBean.getFirstImage(article.id, false)')}">
<o:graphicImage value="#{imageBean.getFirstImage(article.id, true)}" dataURI="true" height="80" />
</h:outputLink>
public byte[] getFirstImage(Long articleId, boolean thumbnail) {
// ...
}
Namely, JSF already has builtin converters for standard types such as Long
and boolean
.