Java 如何使用PrimeFaces在UI上可视化图片

Java 如何使用PrimeFaces在UI上可视化图片,java,jsf,primefaces,Java,Jsf,Primefaces,我想制作一个可切换的表格,其中我名单中的每个机构将位于一个不同的可切换面板中,该面板将包含照片+其他信息。可折叠面板工作完美。我成功地从数据库中提取了机构并打印了它们的名称,但在用户界面上显示它们的图片时遇到了问题 以下是my.xhtml页面中的表单: <h:form> <p:growl id="growl" showDetail="true" /> <c:forEach items="#{agencyBean.agencyList

我想制作一个可切换的表格,其中我名单中的每个机构将位于一个不同的可切换面板中,该面板将包含照片+其他信息。可折叠面板工作完美。我成功地从数据库中提取了机构并打印了它们的名称,但在用户界面上显示它们的图片时遇到了问题

以下是my.xhtml页面中的表单:

<h:form>
    <p:growl id="growl" showDetail="true" />

            <c:forEach items="#{agencyBean.agencyList}" var="inputBoxes">

        <p:fieldset legend="${inputBoxes.tUser.name}" toggleable="true"
                toggleSpeed="500">
                <p:ajax event="toggle" listener="#{fieldsetBean.handleToggle}" update="growl"/>

                <h:panelGrid columns="2" cellpadding="10">
                    <p:graphicImage value="#{agencyBean.getAgencyPhoto(inputBoxes)}" />
                    Agency Name: <h:outputText value="${inputBoxes.tUser.name}"/>
                    Agency Phone:<h:outputText value="${inputBoxes.tUser.phone}"/>
                </h:panelGrid>
            </p:fieldset>       
        </c:forEach>
    </h:form>

我对代码做了一点修改,现在可以使用了:

<p:graphicImage value="#{agencyBean.agencyPhoto}">
                        <f:param name="agencyId" value="#{agency.tUser.id}" />
                    </p:graphicImage> 

NullPointerException在代码中指的是什么?代码已经更改并且现在可以工作了,您可以在下面看到它。谢谢你愿意帮助我!很好,必须指定当前用户ID才能显示相应的图像。
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/MasterThesis] threw exception
java.io.IOException: java.lang.NullPointerException
    at org.primefaces.application.PrimeResourceHandler.handleResourceRequest(PrimeResourceHandler.java:122)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:643)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at bg.fmi.master.thesis.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:20)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
    at com.sun.faces.mgbean.BeanManager$ScopeManager$ViewScopeHandler.getFromScope(BeanManager.java:566)
    at com.sun.faces.mgbean.BeanManager$ScopeManager.getFromScope(BeanManager.java:477)
    at com.sun.faces.mgbean.BeanManager.getBeanFromScope(BeanManager.java:240)
    at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:242)
    at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:147)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
    at org.primefaces.application.PrimeResourceHandler.handleResourceRequest(PrimeResourceHandler.java:85)
    ... 20 more
<p:graphicImage value="#{agencyBean.agencyPhoto}">
                        <f:param name="agencyId" value="#{agency.tUser.id}" />
                    </p:graphicImage> 
public StreamedContent getAgencyPhoto() throws IOException {
        FacesContext context = FacesContext.getCurrentInstance();

        if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
            return new DefaultStreamedContent();
        } else {
            String agencyId = context.getExternalContext()
                    .getRequestParameterMap().get("agencyId");
            TAgency currentAgency = new TAgency();
            for (TAgency currAgency : agencyList) {
                if (currAgency.gettUserId() == Long.valueOf(agencyId))
                    currentAgency = currAgency;

            }
            byte[] image = (byte[]) currentAgency.gettUser().getPhoto();
            if (image == null) {
                return new DefaultStreamedContent();
            } else {
                return new DefaultStreamedContent(new ByteArrayInputStream(
                        image));
            }
        }
    }