-1

BalusC ブログの助けを借りて、Primeface データテーブルに動的画像レンダリングを実装することに成功しました。

今私の問題は次のとおりです。データはデータテーブルの最初のページに入っていますが、ページネーションデータを使用して2番目のページに移動すると失われます。最初のページに戻っても何も来ない。

ここに私のコードがあります:

     <p:dataTable id="users" var="user" styleClass="userSearchTable"
                    paginator="true" rows="5" rowKey="#{user}"
                    paginatorPosition="bottom"
                    paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                    rowsPerPageTemplate="5,10,15"
                    rendered="#{userManagementBean.renderSearchResultPanel}"
                    value="#{userManagementBean.userList}" 
                    emptyMessage="No User Found!!"
                    selection="#{userManagementBean.user}" selectionMode="single">
                    <p:ajax event="rowSelect" update=":form,:form2"
                        onstart="userSelect.show()" oncomplete="userSelect.hide()"
                        listener="#{userManagementActionBean.viewModifyProfile()}" />

                    <p:column style="text-align:center">

                        <p:graphicImage value="#{imageUploadBean.streamedImageById}"
                            height="50" width="50">

                            <f:param id="bean" name="bean" value="#{user}" />

                        </p:graphicImage>
        ............

豆のクラス:

     public StreamedContent getStreamedImageById()
    throws IOException {

    FacesContext context = FacesContext.getCurrentInstance();
    if (context.getRenderResponse()) {

        System.out.println("check");
        return new DefaultStreamedContent();
    }
    else {
        System.out.println("down");
        UserBean userBean =
            findByUserBean(context.getExternalContext().getRequestParameterMap().get(
                "bean"));

        return stringToStreamedContent(userBean.getJpegPhoto());

    }
}


      public StreamedContent stringToStreamedContent(String recv)
    throws IOException {

    try {
        byte[] imageByteArray = decodeImage(recv);
        InputStream is = null;

        is = new ByteArrayInputStream(imageByteArray);

        image =
            new DefaultStreamedContent(
                is, "image/jpeg");
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    return image;

}
4

1 に答える 1

0

私は解決策を得ました。誰かがこの問題に直面した場合、それから助けを得ることができます:

 if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {

        return new DefaultStreamedContent();
    }

それ以外の

 if (context.getRenderResponse()) {

     return new DefaultStreamedContent();
  }
于 2013-11-01T11:09:25.100 に答える