0

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>&lt;ui:repeat&gt;</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

NOTiFY
  • 1,255
  • 1
  • 20
  • 36
  • 1
    The stack trace suggests that you're deploying the webapp as part of an EAR. First and foremost, where exactly is the OmniFaces library placed? In EAR/lib or in WAR/WEB-INF/lib? The concrete problem strongly suggests that it's incorrectly placed in EAR/lib. Or, perhaps the EAR has multiple WARs? This is incompatible with CDI. – BalusC Apr 09 '21 at 11:09
  • Cleared .gradle & checked that OmniFaces is only in: WEB-INF/lib/omnifaces-3.11.jar. OmniFaces is only in my WAR. – NOTiFY Apr 09 '21 at 15:45

0 Answers0