2013-10-31 17 views
-1

在BalusC博客的幫助下,我成功地在Primeface數據表中實現了動態圖像呈現。PrimeFaces數據分頁中的動態圖像

現在我的問題是:數據在第一頁datatable,但如果我移動到第二頁使用分頁數據丟失。即使我在第一頁上再次回到沒有來臨。

這裏是我的代碼:

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

Bean類:

 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; 

} 
+0

你們可以幫我? – Rounak

回答

0

我得到了解決。如果任何一個面對這個問題可以從該幫助: 應該

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

     return new DefaultStreamedContent(); 
    } 

,而不是

if (context.getRenderResponse()) { 

    return new DefaultStreamedContent(); 
    }