Jsf 普莱姆广场

Jsf 普莱姆广场,jsf,primefaces,Jsf,Primefaces,参考: 我的页面: <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

参考:

我的页面:

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

我尝试将
封装在一个表单中,并添加了一个
,但在调用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;
}
public List getImageIds(){
int-aId=(整数)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(“用户id”);
EntityManagerFactory emf=Persistence.createEntityManagerFactory(“TEST2PU”);
EntityManager em=emf.createEntityManager();
TypedQuery tp=em.createQuery(“从a账户中选择a账户,其中a.id=:id”,Account.class”);
tp.setParameter(“id”,aId);
current=tp.getSingleResult();
Collection rawPhotoCollection=current.getPhotoCollection();
ImageID=新阵列列表(rawPhotoCollection);
列表照片列表=新的ArrayList(rawPhotoCollection);
对于(int i=0;i
图像拖缆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()));
    }
}
@EJB
私有测试.控制器.照片.照片立面ejbFacade;
公共流内容getImage()引发IOException{
FacesContext context=FacesContext.getCurrentInstance();
if(context.getCurrentPhaseId()==PhaseId.RENDER_响应){
返回新的DefaultStreamedContent();
}否则{
Map param=FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
字符串id=param.get(“id”);
Photo image=ejbFacade.find(Integer.valueOf(id));
返回新的defaultstreamdcontent(newbytearrayinputstream(image.getImage());
}
}

我重新编写了您的示例,并遇到了相同的问题。它与上载或remotecommand无关。我认为这是一个错误的面孔。有关类似问题,请参见。 当我执行命令时

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');"/>


你想实现什么?我有一个
功能,在上传完每张图片后,我想在不刷新页面的情况下重新加载galleria。你能发布一些bean代码吗?你确定图像在那里吗?上传后ImageID不是空的吗?hi@roel我用bean代码更新了问题,是的,我确定上传后ImageID不是空的,因为我尝试调试代码,它仍然返回ID列表,但它不再呈现galleria,只是空白。所以你从你的手机上调用updateme?我想您的javascript控制台中没有任何错误吧?或者在您的服务器控制台中?您的图库是在面板还是对话框中?第一次进入页面时,galleria是否正确显示?你使用什么浏览器?primefaces的版本是什么?嗨,我搞不清楚什么是
widget\u companydetail\u merchant-gallery
和companydetail:merchant gallery,是
companydetail
表单的名称吗?