次のコードがあります。ui:repeat 部分に画像が表示されますが、画像をクリックすると、コマンド リンクと 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>
サポート Bean
@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;
}
}
「画像 #{imageController.imageID} を読み込めません」というメッセージが選択した画像 ID とともに表示されますが、グラフィック パネルに画像が表示されません。ログにもエラー メッセージは表示されません。streamedcontent が返されます。
更新されたコード: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>