2014-02-01 3 views
1

Вот моя проблема с firefox, использующая версию связи версий перманент 4.0: p: graphicImage У меня есть список моделей, каждый раз, когда я нажимаю 1 элемент, я хотел бы получить 1 изображение соответственно В xhtml файлprimefaces 4.0 p: graphicImage firefox ошибка

<p:fieldset id="modelDiagramView" style="width:100%;height:1280px"> 
    <p:panel id="panel"> 
     <p:graphicImage value="#{modelBean.modelImage}" style="width: 100%;" cache="false"/> 
    </p:panel> 
</p:fieldset> 

в Java Bean, только сессия сфера и сфера приложения работают хорошо

public StreamedContent getModelImage() { 
     FacesContext context = FacesContext.getCurrentInstance(); 

     if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) { 
      System.out.println("render_response: id=" + modelID); 
      // So, we're rendering the HTML. Return a stub StreamedContent so 
      // that it will generate right URL. 
      // modelImage = new DefaultStreamedContent(); 
      if (modelID != null) 
       getModelImage(modelID); 
     } else { 
      System.out.println("real reander: id=" + modelID); 
      if (modelID != null) 
       getModelImage(modelID); 
     } 
     return modelImage; 
    } 

в хроме, когда я нажимаю на пункт в списке, р: graphicImage будет оказывать новое изображение, однако в firefox, только первый изображение объекта будет визуализировано, если я хочу отобразить следующий элемент, который нужно щелкнуть, мне нужно обновить браузер (F5). Является ли это ошибкой первичности, как я могу предотвратить эту проблему? Помогите мне

+1

Для отображения в изображение с помощью primefaces следовать этот ответ на Balcus http://stackoverflow.com/questions/10073905/display-database -blob-images-in-pgraphicimage-inside-uirepeat? rq = 1 – Makky

+0

Привет, Если у вас есть возможность исправить эту проблему, у меня такая же проблема, даже я установил кеш = false в графике im возраст. Это можно воспроизвести как в IE, так и в firefox – bluelabel

+0

Нет, не все. Я должен использовать 2 контроллера и один с SessionScope для отображения изображения. –

ответ

0

Это просто «ошибка», когда браузеры не обновляют изображение с помощью ajax, если URL-адрес не будет изменен. Поэтому вы должны добавить случайное число к URL-адресу ресурса, как показано ниже.

XHTML

<p:graphicImage value="#{bean.stream}" id="pic" width="200"> 
    <f:param name="randomNumber" value="#{beanxxx.randomNumber}"/> 
</p:graphicImage> 

beanxxx

public String getRandomNumber() { 
    Random r = new Random(); 
    int low = 10; 
    int high = 100; 
    int result = r.nextInt(high-low) + low; 

    return Integer.toString(result); 
} 

enter image description here

+1

Гораздо проще установить cache = false на p: graphicImage. – tandraschko

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