2016-04-14 3 views
0

Это упрощенный фрагмент более крупного программного обеспечения. У меня проблема с отображением изображений с помощью p: grapicImage. Я хочу показывать изображения последовательно после «Вставить» каждого из них. В общем, внешняя графика копируется и преобразуется с помощью служебного класса в файлы DefaultStreamedContent и * .png, причем последние находятся в папке ресурсов/изображений. Используя DefaultStreamedContent, когда я нажимаю первую пасту, она показывает правильно изображение 1, но когда я нажимаю вторую пасту, появляется изображение 2, и изображение 1 исчезает, и когда я нажимаю третью пасту, появляется изображение 3, но изображение 2 также исчезает. Использование файлов * .png, первая паста не показывает никаких изображений, вторая вставка показывает изображение 1, но не изображение 2, а третья вставка показывает изображение 2 и изображение 1, но не изображение 3. Наконец, я могу видеть все изображения, если я нажмите кнопку перезагрузки веб-страницы после третьей пасты. Вложенный файл xhtml содержит активное отображение файлов * .png. Я пробовал различные подходы, включая update = различные сегменты, отмечая, что у многих людей были проблемы с p: grapicImage, и я не нашел средства правовой защиты. Мои вопросы: почему код ведет себя таким образом и как я могу заставить его работать правильно.Отображение нескольких <p: graphicImage> на одной странице

Отображение изображений с использованием кода:

enter image description here

<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. с затмением.

+0

Похоже, что мой вопрос трудно ответить даже экспертами, и я не удивлен, потому что, на мой взгляд, невозможно понять его, не зная, хорошо ли код JQuery позади graphicImage. Вероятно, есть HTTP-запрос или запросы, которые берут только последний созданный StreamedContent и пропускают другие переменные StreamedContent, хранящиеся в памяти. Мне интересно, есть ли возможность посмотреть исходный код jQuery graphicImage, чтобы выяснить, что можно сделать с этой проблемой. – Adam

ответ

0

Решение, которое я выбрал включает в себя отображение каждого изображения на отдельном веб-страницы (TAB), каждый созданный с помощью метода пользовательского интерфейса слой фасоли с использованием DefaultStreamedContent, как показано в примере ниже:

public void loadImageWork() throws IOException { 
    imageWork = imageService.getGraphicImage(); 
    imageWorkName = imageWork.getName(); 
    streamWork = imageService.getOs(); 
RequestContext.getCurrentInstance().execute("window.open('weeklyWork.xhtml')"); 

Os здесь ByteArrayOutputStream.

Все изображения могут быть сразу переданы в хранилище для хранения SQL Server по мере необходимости.

Смежные вопросы