Primefaces DataGrid - CommandLink无法正常工作

时间:2012-08-16 10:32:23

标签: jsf jsf-2 primefaces

我遇到嵌套UI组件的问题,这可能是PrimeFaces和Mojara中的已知错误。但是我不知道如何解决它。

我们有一个带有上传器的图片库,我希望能够从数据网格中删除图片,所以

XHTML:

<h:form enctype="multipart/form-data">

            <p:fileUpload fileUploadListener="#{pictureManagementBean.handleFileUpload}"  
                    mode="advanced"  
                    update="gallery messages"  
                    auto="true"                    
                    allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
                    />  

            <p:growl id="messages" showDetail="true"/>  

            <p:dataGrid var="item" value="#{pictureManagementBean.pictures}" id="gallery">  
                <p:panel header="#{item.pictureName}" style="text-align:center">  
                    <h:panelGrid columns="1" style="width:100%">  

                        <p:graphicImage value="#{item.thumbnailDir}" />                             
                        <h:outputText value="#{item.createdate.toString()}" />                           
                        <p:commandLink value="Delete" 
                                       action="#{pictureManagementBean.removePicture(item.idpicture)}" ajax="false"/>

                    </h:panelGrid>  
                </p:panel>  
            </p:dataGrid>  

        </h:form>  

基本上没有工作的东西 - 根本就是DataGrid中的commandLink Delete。其余的都很好。

有没有解决方法?我试过了:列,ajax,没有ajax ......什么都行不通。我所能做的就是获取DataGrid外部的按钮。但那不是我想要的。

任何有帮助的人都会感激不尽。

[小事:令人惊讶的是我在DataTable和Columns中使用了commandLink没有问题! ]

来自maven的Primefaces 3.4RC1。 (也没有在3.3.1上工作)

好的,所以我找到了一件事: <p:dataGrid>内,如果我使用任何东西但是p:列不起作用。 但后来这个观点很糟糕......我应该用CSS来修复它吗?

1 个答案:

答案 0 :(得分:3)

@Maple_shaft你是对的!

正确的代码:

<p:dataGrid var="item" value="#{pictureManagementBean.pictures}" id="gallery">  
                <p:column>
                    <p:panel header="#{item.pictureName}" style="text-align:center"> 
                    <h:panelGrid columns="1" style="width:100%"> 

                        <p:graphicImage value="#{item.thumbnailDir}" />                             
                        <h:outputText value="#{item.createdate.toString()}" />                           
                        <p:commandLink value="Delete" 
                                       action="#{pictureManagementBean.removePicture(item.idpicture)}" ajax="false"/>

                    </h:panelGrid>
                    </p:panel>
                </p:column>
            </p:dataGrid>  

所以只是简单的列元素。我以前错了。非常感谢。

当然,支持bean是@ViewScoped!