Jsf 2 无法在p:graphicImage中显示图像

Jsf 2 无法在p:graphicImage中显示图像,jsf-2,primefaces,Jsf 2,Primefaces,我有以下代码,我可以在ui中看到图像:重复部分,但当我单击图像时,命令链接和setPropertyActionListener工作正常,但图像不会显示在所需的面板网格中 <p:layoutUnit id="centre" position="center" > <h:panelGrid id="test" columns="2" cellpadding="2" > <h:panelGroup> <div

我有以下代码,我可以在ui中看到图像:重复部分,但当我单击图像时,命令链接和setPropertyActionListener工作正常,但图像不会显示在所需的面板网格中

<p:layoutUnit id="centre" position="center"  >
    <h:panelGrid id="test" columns="2" cellpadding="2" >
        <h:panelGroup>
            <div id="imageWrap" style="width:600px; height:400px; margin:auto; overflow:scroll; position:relative;">
                <p:graphicImage id="prodImage" value="#{imageController.image}" alt="unable to load image #{imageController.imageID}" />
            </div>
        </h:panelGroup>
    </h:panelGrid>
</p:layoutUnit>

<p:layoutUnit id="left" position="west" >
    <h:panelGrid  id="panelGrid3" columns="2" cellspacing="2" cellpadding="2">
        <ui:repeat id="repeat5" value="#{getData.imageThumbnail1}" var="imagesLst" varStatus="loop">
            <h:panelGroup>
                <p:commandLink update=":form:tabView:test" >
                    <f:setPropertyActionListener target="#{imageController.imageID}" value="#{imagesLst.imageID}" />
                    <p:graphicImage id="gi5" value="#{imagesStreamer.image}" alt="image not available" >
                        <f:param name="id" value="#{imagesLst.imageID}" />
                    </p:graphicImage>
                </p:commandLink>
            </h:panelGroup>
        </ui:repeat>
    </h:panelGrid>
</p:layoutUnit>
“无法加载图像#{imageController.imageID}”与所选图像id一起显示,但我无法在图形面板中看到该图像。 在日志中,我也没有看到任何错误消息,它返回streamedcontent

更新代码:1

<p:layoutUnit id="centre" position="center"  >
    <h:panelGrid id="test" columns="2" cellpadding="2" >
        <h:panelGroup>
            <div id="imageWrapper" style="width:600px; height:400px; margin:auto; overflow:scroll; position:relative;">
                <p:graphicImage id="Img1" value="#{imagesStreamer.image}" alt="image id to be displayed #{imagesLst.imageID}" >
                    <f:param name="id5" value="#{imagesLst.imageID}" />
                </p:graphicImage>
            </div>
        </h:panelGroup>
    </h:panelGrid>
</p:layoutUnit>

<p:layoutUnit id="right" position="east" >
    <h:panelGrid  id="panelGrid3" columns="2" cellspacing="2" cellpadding="2">
        <ui:repeat id="repeat5" value="#{getData.imageThumbnail1}" var="imagesLst" varStatus="loop">
            <h:panelGroup>
                <p:commandLink id="cl5" update=":form:tabView:test">
                    <p:graphicImage id="gi5" value="#{imagesStreamer.image}" alt="image not available3" >
                        <f:param name="id5" value="#{imagesLst.imageID}" />
                    </p:graphicImage>
                </p:commandLink>
            </h:panelGroup>
        </ui:repeat>
    </h:panelGrid>
</p:layoutUnit>

更换

<p:graphicImage id="prodImage" value="#{imageController.image}" alt="unable to load image #{imageController.imageID}" />



删除
ImageController#getImage()
方法。继续对所有动态图像使用
ImageStreamer
(假设您使用的是中提供的图像)。

不,如果没有,请检查上面更新的代码,我已经做了更改,还删除了托管bean imagesStreamer.image中的f:setPropertyActionListener部分。返回数据时,但在页面中,我没有看到图像,只有alt部分。我这样做了,最可怜的方式是,我将ByteArrayInputStream存储在arraylist中-在同一页面中再次传递此值不起作用(至少对我来说),现在,我在arraylist中添加了一个值,我在其中存储ByteArrayOutputStream,然后将其转换为ByteArrayInputStream,然后再转换为流式内容,不知何故,它是有效的。需要找出做同样事情的更好方法。感谢BalusC为大部分问题提供了答案,如果没有你,大部分问题将无法回答,请继续做出巨大贡献(知识)。
<p:graphicImage id="prodImage" value="#{imageController.image}" alt="unable to load image #{imageController.imageID}" />
<p:graphicImage id="prodImage" value="#{imagesStreamer.image}" alt="unable to load image #{imageController.imageID}">
    <f:param name="id" value="#{imageController.imageID}" />
</p:graphicImage>