Can select a single image & display it using these two:
<p:galleria value="#{imagesController.images}" var="image" panelWidth="1500" panelHeight="1000" showCaption="true">
<o:graphicImage value="#{nOTiFYMotorcycleController.imageFileUrlPng}" dataURI="true"/>
</p:galleria>
<o:graphicImage value="#{nOTiFYMotorcycleController.imageFileUrlPng}" dataURI="true"/>
If I try and create a multiple number of images (using OmniFaces Showcase https://showcase.omnifaces.org/components/graphicImage) with:
<!-- Galleria 4 - ui:repeat & o:graphicImage -->
<h3>The below one renders byte[] property taking a Long argument as resource in <code><ui:repeat></code> loop</h3>
<p>
<ui:repeat value="#{images.ids}" var="id">
<o:graphicImage value="#{images.getContent(id)}" lastModified="#{startup.time}"/>
</ui:repeat>
</p>
with:
@Named("images")
@GraphicImageBean
public class Images {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
*
*/
private static final Logger LOGGER = LoggerFactory.getLogger(Images.class);
/**
*
*/
private static final Map<Long, String> IMAGES = Collections.unmodifiableMap(new TreeMap<Long, String>() {
private static final long serialVersionUID = 1L;
{
put(1L, "gu9032273eum01-01-m");
put(2L, "gu9032274eum01-01-m");
put(3L, "gu9032274eum02-01-m");
put(4L, "gu9032275eum01-01-m");
put(5L, "gu9032276eum01-01-m");
}
});
/**
* @param id
* @return
* @throws IOException
*/
public byte[] getContent(Long id) throws IOException {
// Note: this is a dummy example. In reality, you should be able to return the desired byte[] content from some
// service class by given ID.
LOGGER.info(">>>>> Images byte getContent id = {}", id);
return Utils.toByteArray(Faces.getResourceAsStream("/Users/NOTiFY/IdeaProjects/GoStopHandle/images/MotoGuzzi/2021/V85/" + IMAGES.get(id) + ".webp"));
}
/**
* @return
*/
public Long[] getIds() {
// Note: this is just a dummy example. In reality, you should be able to obtain them from another request/view
// scoped bean as ID of an entity representing the image.
LOGGER.info(">>>>> Images Long IMAGES = {}", IMAGES);
LOGGER.info(">>>>> Images Long IMAGES size = {}", IMAGES.size());
LOGGER.info(">>>>> Images Long IMAGES keySet = {}", IMAGES.keySet().toArray(new Long[IMAGES.size()]));
return IMAGES.keySet().toArray(new Long[IMAGES.size()]);
}
}
I get:
SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (default task-6) Error Rendering View[/index.xhtml]: java.lang.IllegalArgumentException: o:graphicImage 'value' attribute must refer a @GraphicImageBean or @ApplicationScoped bean. Cannot find the right annotation on bean class 'class com.gostophandle.omnifaces.Images'.
> 15:23:30,307 SEVERE
> [javax.enterprise.resource.webcontainer.jsf.application] (default
> task-3) Error Rendering View[/index.xhtml]:
> java.lang.IllegalArgumentException: o:graphicImage 'value' attribute
> must refer a @GraphicImageBean or @ApplicationScoped bean. Cannot find
> the right annotation on bean class 'class
> com.gostophandle.omnifaces.Images'. at
> deployment.GoStopHandle.ear.GoStopHandleWAR.war//org.omnifaces.resourcehandler.GraphicResource.create(GraphicResource.java:204)
> at
> deployment.GoStopHandle.ear.GoStopHandleWAR.war//org.omnifaces.component.output.GraphicImage.createGraphicResourceByValue(GraphicImage.java:320)
> at
> deployment.GoStopHandle.ear.GoStopHandleWAR.war//org.omnifaces.component.output.GraphicImage.getSrc(GraphicImage.java:285)
> at
> deployment.GoStopHandle.ear.GoStopHandleWAR.war//org.omnifaces.component.output.GraphicImage.encodeBegin(GraphicImage.java:242)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.component.UIComponent.encodeAll(UIComponent.java:1644)
> at
> com.sun.jsf-impl@2.3.14.SP04//com.sun.faces.facelets.component.RepeatRenderer.encodeChildren(RepeatRenderer.java:64)
> at
> com.sun.jsf-impl@2.3.14.SP04//com.sun.faces.facelets.component.UIRepeat.process(UIRepeat.java:559)
> at
> com.sun.jsf-impl@2.3.14.SP04//com.sun.faces.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:1068)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.component.UIComponent.encodeAll(UIComponent.java:1647)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650)
> at
> deployment.GoStopHandle.ear.GoStopHandleWAR.war//org.primefaces.component.tabview.TabViewRenderer.encodeTabContent(TabViewRenderer.java:316)
> at
> deployment.GoStopHandle.ear.GoStopHandleWAR.war//org.primefaces.component.tabview.TabViewRenderer.lambda$encodeContents$1(TabViewRenderer.java:287)
> at
> deployment.GoStopHandle.ear.GoStopHandleWAR.war//org.primefaces.component.tabview.TabView.forEachTab(TabView.java:188)
> at
> deployment.GoStopHandle.ear.GoStopHandleWAR.war//org.primefaces.component.tabview.TabViewRenderer.encodeContents(TabViewRenderer.java:285)
> at
> deployment.GoStopHandle.ear.GoStopHandleWAR.war//org.primefaces.component.tabview.TabViewRenderer.encodeMarkup(TabViewRenderer.java:154)
> at
> deployment.GoStopHandle.ear.GoStopHandleWAR.war//org.primefaces.component.tabview.TabViewRenderer.encodeEnd(TabViewRenderer.java:92)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:595)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.component.UIComponent.encodeAll(UIComponent.java:1654)
> at
> com.sun.jsf-impl@2.3.14.SP04//com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:615)
> at
> com.sun.jsf-impl@2.3.14.SP04//com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:159)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.component.UIComponent.visitTree(UIComponent.java:1456)
> at
> deployment.GoStopHandle.ear.GoStopHandleWAR.war//org.primefaces.component.api.UITabPanel.visitTree(UITabPanel.java:939)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.component.UIComponent.visitTree(UIComponent.java:1468)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.component.UIForm.visitTree(UIForm.java:355)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.component.UIComponent.visitTree(UIComponent.java:1468)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.component.UIComponent.visitTree(UIComponent.java:1468)
> at
> com.sun.jsf-impl@2.3.14.SP04//com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:400)
> at
> com.sun.jsf-impl@2.3.14.SP04//com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:319)
> at
> deployment.GoStopHandle.ear.GoStopHandleWAR.war//org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:65)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:228)
> at
> deployment.GoStopHandle.ear.GoStopHandleWAR.war//org.omnifaces.context.OmniPartialViewContext.processPartial(OmniPartialViewContext.java:122)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:1102)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.component.UIComponent.encodeAll(UIComponent.java:1647)
> at
> com.sun.jsf-impl@2.3.14.SP04//com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:442)
> at
> com.sun.jsf-impl@2.3.14.SP04//com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:170)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:132)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:132)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:132)
> at
> deployment.GoStopHandle.ear.GoStopHandleWAR.war//org.omnifaces.viewhandler.OmniViewHandler.renderView(OmniViewHandler.java:155)
> at
> com.sun.jsf-impl@2.3.14.SP04//com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:102)
> at
> com.sun.jsf-impl@2.3.14.SP04//com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76)
> at
> com.sun.jsf-impl@2.3.14.SP04//com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:199)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:708)
> at
> javax.faces.api@3.0.0.SP04//javax.faces.webapp.FacesServlet.service(FacesServlet.java:451) at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
> at
> io.undertow.websocket@2.2.5.Final//io.undertow.websockets.jsr.JsrWebSocketFilter.doFilter(JsrWebSocketFilter.java:173)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
> at
> io.opentracing.contrib.opentracing-jaxrs2//io.opentracing.contrib.jaxrs2.server.SpanFinishingFilter.doFilter(SpanFinishingFilter.java:52)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
> at
> org.wildfly.extension.undertow@23.0.0.Final//org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
> at
> io.undertow.core@2.2.5.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
> at
> io.undertow.core@2.2.5.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
> at
> io.undertow.core@2.2.5.Final//io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
> at
> io.undertow.core@2.2.5.Final//io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
> at
> io.undertow.core@2.2.5.Final//io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
> at
> io.undertow.core@2.2.5.Final//io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
> at
> io.undertow.core@2.2.5.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
> at
> org.wildfly.extension.undertow@23.0.0.Final//org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
> at
> io.undertow.core@2.2.5.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
> at
> org.wildfly.extension.undertow@23.0.0.Final//org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
> at
> io.undertow.core@2.2.5.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
> at
> org.wildfly.extension.undertow@23.0.0.Final//org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
> at
> org.wildfly.extension.undertow@23.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
> at
> org.wildfly.extension.undertow@23.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
> at
> org.wildfly.extension.undertow@23.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
> at
> org.wildfly.extension.undertow@23.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
> at
> org.wildfly.extension.undertow@23.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)
> at
> io.undertow.servlet@2.2.5.Final//io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)
> at
> io.undertow.core@2.2.5.Final//io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
> at
> io.undertow.core@2.2.5.Final//io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:841)
> at
> org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
> at
> org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
> at
> org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
> at
> org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
> at
> org.jboss.xnio@3.8.4.Final//org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1280)
> at java.base/java.lang.Thread.run(Thread.java:832)
What I use:
PrimeFace (Elite) 10.0.0 Mojarra JSF 2.3.14.SP04 & OmniFaces 3.11
WildFly 23.0.0.Final Weld 3.1.5 (Final) & CDI 2.0 Java OpenJDK 15.0.2, Kotlin 1.4.32, Gradle 6.8.3, MongoDB 4.4.4 Google Chrome, macOS Big Sur 11.2.2