Невозможно отобразить изображение в p: graphicImage

У меня есть следующий код, я могу видеть изображения в пользовательском интерфейсе: повторять часть, но когда я нажимаю на изображение, команда link и 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>

поддерживающий боб

@ManagedBean
@SessionScoped
public class imageController implements Serializable {

    private String imageID;
    private StreamedContent sc;

    /** Creates a new instance of imageController */
    public imageController() {
    }

    public void setImageID(String imageID) {
        this.imageID = imageID;
        System.out.println("ImageController set == "+ this.imageID);
    }

    public String getImageID(){
        return imageID;
    }

    public StreamedContent getImage() {
        System.out.println("ImageController get == "+ this.imageID);
        if (imageID != null) {
            ByteArrayInputStream image = GetData.findImages(imageID);
            System.out.println("Passing Default Streamed Content");
            return new DefaultStreamedContent(image);
        }
        return sc;

    }
}

& Quot; невозможно загрузить image # {imageController.imageID} & quot; отображается с выбранным идентификатором изображения, но я не вижу изображение на графической панели. В журнале также не отображается сообщение об ошибке, возвращается возвращаемое содержимое.

ОБНОВЛЕННЫЙ КОД: 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>

Ответы на вопрос(1)

<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>

а такжеremove тотImageController#getImage() метод. Продолжайте использоватьImageStreamer для всех динамических изображений (при условии, что вы использовали одно изодин из ваших предыдущих вопросов).

 user143380413 июн. 2012 г., 20:11
Нет, это не происходит, проверьте обновленный код выше, я внес изменения и также удалил часть f: setPropertyActionListener, в моем управляемом компоненте imagesStreamer.image возвращаются данные, но на странице я не вижу изображение, но только альт часть.
 user143380414 июн. 2012 г., 21:05
Я сделал это, самым жалким образом, я сохранял ByteArrayInputStream в arraylist - передача этого значения снова на той же странице не работала (по крайней мере для меня), теперь я добавил еще одно значение в arraylist, где я храню ByteArrayOutputStream и затем преобразовать то же самое в ByteArrayInputStream, а затем в потоковое содержимое, как-то это работает. Необходимо выяснить, что является лучшим способом сделать то же самое. Спасибо, BalusC, за публикацию ответа на большинство вопросов, без вас большинство вопросов останутся без ответа, продолжайте в том же духе (знания).

Ваш ответ на вопрос