【问题标题】:primefaces reload galleriaprimefaces重新加载画廊
【发布时间】:2013-03-26 06:02:36
【问题描述】:

参考:http://www.primefaces.org/showcase/ui/galleria.jsf

我的页面:

<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>  

我尝试将&lt;p:galleria&gt; 包含在一个表单中并添加了一个&lt;p:remoteCommand name="updateme" update="@form"/&gt;,但在调用updateme 之后它只是将galleria 设为空白。

*更新

testController bean:

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 bean:

@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()));
    }
}

【问题讨论】:

  • 你想达到什么目的?
  • 我有一个&lt;p:fileUpload&gt; 功能,上传每张图片后我想重新加载画廊而不刷新页面。
  • 你能发布一些bean代码吗?您确定上传后图像在那里并且 .imageIds 不为空吗?
  • 嗨@roel我用bean代码更新了问题,是的,我确定上传后imageids不是空的,因为我尝试调试代码,它仍然返回列表ids 但它不会再渲染广场了,只是空白。
  • 所以你从你的 调用 updateme?我想您的 javascript 控制台中没有任何错误?还是在您的服务器控制台中?您的画廊在面板或对话框内吗?首次访问页面,gallery 显示是否正确?您使用什么浏览器以及什么版本的 primefaces?

标签: jsf primefaces


【解决方案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');

在萤火虫控制台中,广场重新出现。 因此,当更改远程命令并将 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');"/>

【讨论】:

  • 嗨,我很困惑 widget_companydetail_merchant-gallery 和 companydetail:merchant-gallery 是什么,companydetail 是表单的名称吗?
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2014-03-09
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多