2

我遇到了嵌套 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:columns 它不起作用。但是视图很糟糕......我应该只使用CSS来修复它吗?

4

1 回答 1

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!

于 2012-08-16T11:58:51.300 回答