Это упрощенный фрагмент более крупного программного обеспечения. У меня проблема с отображением изображений с помощью p: grapicImage. Я хочу показывать изображения последовательно после «Вставить» каждого из них. В общем, внешняя графика копируется и преобразуется с помощью служебного класса в файлы DefaultStreamedContent и * .png, причем последние находятся в папке ресурсов/изображений. Используя DefaultStreamedContent, когда я нажимаю первую пасту, она показывает правильно изображение 1, но когда я нажимаю вторую пасту, появляется изображение 2, и изображение 1 исчезает, и когда я нажимаю третью пасту, появляется изображение 3, но изображение 2 также исчезает. Использование файлов * .png, первая паста не показывает никаких изображений, вторая вставка показывает изображение 1, но не изображение 2, а третья вставка показывает изображение 2 и изображение 1, но не изображение 3. Наконец, я могу видеть все изображения, если я нажмите кнопку перезагрузки веб-страницы после третьей пасты. Вложенный файл xhtml содержит активное отображение файлов * .png. Я пробовал различные подходы, включая update = различные сегменты, отмечая, что у многих людей были проблемы с p: grapicImage, и я не нашел средства правовой защиты. Мои вопросы: почему код ведет себя таким образом и как я могу заставить его работать правильно.Отображение нескольких <p: graphicImage> на одной странице
Отображение изображений с использованием кода:
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Test</title>
</h:head>
<body>
<h:outputStylesheet name="css/styles.css" />
<h:form id="weeklyupdate">
<p:layout id="panel1" style="width:1240px; height:880px;">
<p:layoutUnit styleClass="layout" position="center">
<h:panelGrid columns="2" style="width:1200px">
<p:layout style="width:600px; height:840px;">
<p:layoutUnit position="center">
<p:commandButton value="Paste 1"
actionListener="#{weeklyProjectsUI.pasteImageWork}" ajax="false" />
<p:graphicImage id="imgwork" url="resources/images/work.png"
style="width: 570px; min-height:25%" cache="false" />
<ui:remove>
<p:graphicImage id="imgwork" styleClass="imagedisplay"
value="#{weeklyProjectsUI.imageWork}"
style="width: 570px; min-height:25%" cache="false" />
</ui:remove>
</p:layoutUnit>
</p:layout>
<p:layout style="width:600px; height:840px;">
<p:layoutUnit styleClass="layout" position="center">
<br></br>
<p:commandButton value="Paste 2"
actionListener="#{weeklyProjectsUI.pasteImageEvidence1}"
ajax="false" />
<p:graphicImage id="imgevidence1" styleClass="imagedisplay"
url="resources/images/evidence1.png"
style="width: 570px; min-height:25%" cache="false" />
<ui:remove>
<p:graphicImage styleClass="imagedisplay"
value="#{weeklyProjectsUI.imageEvidence1}"
style="width: 570px; min-height:25%" cache="false" />
</ui:remove>
<br></br>
<br></br>
<p:commandButton value="Paste 3"
actionListener="#{weeklyProjectsUI.pasteImageEvidence2}"
ajax="false" />
<ui:remove>
<p:graphicImage styleClass="imagedisplay"
value="#{weeklyProjectsUI.imageEvidence2}"
style="width: 570px; min-height:25%" cache="false" />
</ui:remove>
<p:graphicImage id="imgevidenc2" styleClass="imagedisplay"
url="resources/images/evidence2.png"
style="width: 570px; min-height:25%" cache="false" />
</p:layoutUnit>
</p:layout>
</h:panelGrid>
</p:layoutUnit>
</p:layout>
</h:form>
</body>
</html>
..И существенную часть подложки боба
public void pasteImageWork() throws IOException{
String work = "work";
imageService.imageCopy(work);
loadImageWork();
}
public void pasteImageEvidence1() throws IOException {
String evidence1 ="evidence1";
imageService.imageCopy(evidence1);
loadImageEvidence1();
}
public void pasteImageEvidence2() throws IOException {
String evidence2="evidence2";
imageService.imageCopy(evidence2);
loadImageEvidence2();
}
public void loadImageWork() throws IOException{
imageWork = imageService.getGraphicImage();
System.out.println("Work loaded: " + imageWork.toString());
}
public void loadImageEvidence1() throws IOException {
imageEvidence1 = imageService.getGraphicImage();
System.out.println("Evidence1 loaded: " + imageEvidence1.toString());
}
public void loadImageEvidence2() throws IOException {
imageEvidence2 = imageService.getGraphicImage();
System.out.println("Evidence2 loaded: " + imageEvidence2.toString());
}
Кстати, я используя прайс-листы 5.3. с затмением.
Похоже, что мой вопрос трудно ответить даже экспертами, и я не удивлен, потому что, на мой взгляд, невозможно понять его, не зная, хорошо ли код JQuery позади graphicImage. Вероятно, есть HTTP-запрос или запросы, которые берут только последний созданный StreamedContent и пропускают другие переменные StreamedContent, хранящиеся в памяти. Мне интересно, есть ли возможность посмотреть исходный код jQuery graphicImage, чтобы выяснить, что можно сделать с этой проблемой. – Adam