我張貼谷歌搜索了很多,很多與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,我不知道爲什麼。