2013-03-26 58 views
0

参考:http://www.primefaces.org/showcase/ui/galleria.jsfprimefaces重装广场

我的网页:

<p:galleria id="merchant-gallery" value="#{testController.imageIds}" var="item" autoPlay="false" > 
    <p:graphicImage width="300" value="#{imageStreamer.image}" > 
     <f:param name="id" value="#{item}" /> 
    </p:graphicImage> 
</p:galleria> 

我想在一个封闭的形式和<p:galleria>增加了<p:remoteCommand name="updateme" update="@form"/>但调用updateme后,只是简单地让广场的空白。

*更新

豆的TestController:

public List<Integer> getImageIds() { 
    int aId = (Integer) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("user_id"); 
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("TEST2PU"); 
    EntityManager em = emf.createEntityManager(); 
    TypedQuery<Merchant> tp = em.createQuery("SELECT a FROM Account a WHERE a.id = :id", Account.class); 
    tp.setParameter("id", aId); 
    current = tp.getSingleResult(); 

    Collection rawPhotoCollection = current.getPhotoCollection(); 

    imageIds = new ArrayList<Integer>(rawPhotoCollection); 
    List<Photo> photoList = new ArrayList<Photo>(rawPhotoCollection); 

    for (int i = 0; i < photoList.size(); i++) { 
     int imageId = photoList.get(i).getId(); 
     imageIds.set(i, imageId); 
    } 

    return imageIds; 
} 

imageStreamer豆:

@EJB 
private test.controller.photo.PhotoFacade ejbFacade; 

public StreamedContent getImage() throws IOException { 
    FacesContext context = FacesContext.getCurrentInstance(); 

    if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) { 
     return new DefaultStreamedContent(); 
    } else { 
     Map<String, String> param = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); 
     String id = param.get("id"); 

     Photo image = ejbFacade.find(Integer.valueOf(id)); 
     return new DefaultStreamedContent(new ByteArrayInputStream(image.getImage())); 
    } 
} 
+0

你想达到什么目的? – roel 2013-03-26 09:13:08

+0

我有一个''功能,上传每张图片后,我想重新加载环球免税店而不刷新页面。 – galao 2013-03-26 09:23:44

+0

你可以发布一些bean代码吗?你确定图像在那里,并且.imageIds在你上传之后不是空的吗? – roel 2013-03-26 10:16:57

回答

1

我返工你的榜样,并有同样的问题。它与您的上传或远程命令无关。我认为这是primefaces中的一个错误。有关类似问题,请参阅http://code.google.com/p/primefaces/issues/detail?id=4840。 当我命令

PrimeFaces.cw('Galleria','widget_companydetail_merchant-gallery',{id:'companydetail:merchant-gallery',transitionInterval:0,panelWidth:640,panelHeight:480,custom:false},'galleria'); 
在Firebug控制台

,的Galleria再次出现。 所以,当更改remotecommand并将javascript添加到oncomplete时,它可以工作。

<p:remoteCommand name="updateme" update="@form" oncomplete="PrimeFaces.cw('Galleria','widget_companydetail_merchant-gallery',{id:'companydetail:merchant-gallery',transitionInterval:0,panelWidth:640,panelHeight:480,custom:false},'galleria');"/> 
+0

嗨,即时通讯混淆什么'widget_companydetail_merchant-gallery'和companydetail:merchant-gallery是,'companydetail'的形式的名称? – galao 2013-04-01 04:04:31

+0

哦,我明白了!哇!谢谢! :d – galao 2013-04-01 08:05:24