2015-02-11 131 views
0

我張貼谷歌搜索了很多,很多與AF實驗後,這個問題:圖像組件。AF:圖像不被刷新

我的情況如下:

我有一個AF:鏈接被打開AF:彈出從背襯豆如下所示:

<af:link text="Link" id="l3" 
      actionListener="#{myBean.myActionListener}"> 
    <f:attribute name="personId" value="#{row.PersonId}"/> 
    <f:attribute name="fullName" value="#{row.FullName}"/> 
    </af:link> 

和myActionListener方法是這樣的:

public void myActionListener(ActionEvent actionEvent) { 

    if (actionEvent.getComponent().getAttributes().get("personId") != null) { 

     Long personId = (Long) actionEvent.getComponent().getAttributes().get("personId"); 
     String fullName = (String)actionEvent.getComponent().getAttributes().get("fullName"); 


     // puting the attributes in the page Flow Scope 
     AdfFacesContext.getCurrentInstance().getPageFlowScope().put("currentPersonId", currentPersonId); 
     AdfFacesContext.getCurrentInstance().getPageFlowScope().put("currentFullName", currentFullName); 

     String imageUrl = "/myImageServlet?personId="+personId ; 
     AdfFacesContext.getCurrentInstance().getPageFlowScope().put("imageUrl", imageUrl); 


     // check if the image is stored in the file system 
     String fileLocation = "C:\\pics\\" ; 

     File imageFile = new File(fileLocation + personId); 
     if(imageFile.exists()){ 
      AdfFacesContext.getCurrentInstance().getPageFlowScope().put("personImageExist", true); 
     }else { 
    AdfFacesContext.getCurrentInstance().getPageFlowScope().put("personImageExist", false); 
     } 

     //show the popup here 
     RichPopup.PopupHints hints = new RichPopup.PopupHints(); 
     this.getImagePopupTab2().show(hints); 

    } 
} 

然後是我的彈出與AF:像這樣的:

<af:popup childCreation="immediate" autoCancel="disabled" id="imagePopupTab2" 
    binding="#{myBean.imagePopupTab2}" contentDelivery="lazyUncached"> 
     <af:dialog id="d123456" closeIconVisible="false"> 
     <af:panelGroupLayout id="pgl899" layout="vertical"> 
      <af:panelGroupLayout id="pgl1110" layout="horizontal"> 
      <af:spacer width="20" height="10" id="s34"/> 
      <af:image source="#{pageFlowScope.imageUrl}" 
        id="i222" rendered="#{pageFlowScope.personImageExist}" 
       /> 
      </af:panelGroupLayout> 

     </af:panelGroupLayout> 
     </af:dialog> 
</af:popup> 

以下效果很好,我的問題是當我嘗試更新的文件系統映像文件,然後再次調用彈出,T 他舊形象仍緩存在那裏,它不會刷新

香港專業教育學院嘗試了以下解決方案,它沒有工作:

1-增加的部分觸發爲AF:圖像更新後刷新。

2-添加一個局部觸發AF:圖像父佈局進行刷新。

3我試圖從backing bean中設置源屬性爲af:image

4我也試過h:graphicImage and tr:image同樣的事情。

問題是,af:image沒有再次調用源Servlet,我不知道爲什麼。

回答

0

嘗試揭露AF:圖像的結合到支持bean:

<af:image binding="#{myBean.imageComp" source="#{pageFlowScope.imageUrl}" 
        id="i222" rendered="#{pageFlowScope.personImageExist}" 
       /> 

在myActionListener方法,做程序上的PPR:

AdfFacesContext.getCurrentInstance().addPartialTarget(getImageComp()); 
1

是Servlet URL前和刷新後一樣嗎?如果是這樣,請嘗試向URL添加一個參數,以便刷新後的參數不同。

例如:

/imageservlet?id=302201&refreshTrigger=1 

正是在這種blog post的 「要點」 談到簡要介紹。