commandButton用于从p:galleria中删除图像

时间:2014-10-27 11:11:28

标签: jsf primefaces

我使用的是Primefaces 5.0.2和Glassfish 4(Mojarra 2.2.0)。

我一直在尝试添加命令按钮来删除/删除p:galleria组件中的所选图像。我尝试在galleria组件中添加一个按钮,如下所示:

<p:galleria id="images" value="#{someBean.images}" var="image">
    <p:graphicImage value="#{image}"/>
    <p:commandButton icon="ui-icon-trash" title="Delete #{image}" style="position:absolute; top:0; right:0; z-index:10;" 
        actionListener="#{someBean.deleteImage(image)}"
        update="growl images" />
</p:galleria>

我可以在按钮内显示图像路径,但在EL表达式#{someBean.deleteImage(image)}中传递图像参数不能按预期工作。

我遇到的问题是,当调用deleteImage时,图像参数(String)始终为空,而不是包含图像名称。但是,title="Delete #{image}"显示正常,因此我怀疑image未在actionListeneraction属性中正确解析。

如果我在xhtml中输入文字字符串,例如#{someBean.deleteImage('deleteme')}它正确传递。传递null也会给出一个空字符串。

someBean.imagesList<String>(图片路径)。

我不知所措:/有人能指出我正确的方向吗?这是一个错误还是我做错了什么?

我还考虑过在galleria组件外添加一个按钮,但我不清楚如何确定所选图像而不必修改p:galleria组件。 还有一个未解决的问题(1岁)How to get the selected image from <p:galleria

更新 使用"test"imageui:param追加到c:set实际上会在"test"方法中为我提供字符串deleteImage,但h:outputText } component正确呈现image的值,并附加"test"。这告诉我它们在不同的时间呈现 - 而commandButton是在image为空时呈现的吗?

<p:galleria id="images" value="#{someBean.images}" var="image">
    <p:graphicImage value="#{image}"/>
    <ui:param name="img" value="#{image}test"/>
    <h:outputText value="#{img}"/>
    <p:commandButton icon="ui-icon-trash" title="Delete #{image}" style="position:absolute; top:0; right:0; z-index:10;" 
        actionListener="#{someBean.deleteImage(img)}"/>
</p:galleria>

更新2

这可能与Primefaces Extensions中的类似问题有关 - 也许它毕竟是一个错误。 http://forum.primefaces.org/viewtopic.php?f=14&t=39992

我也在PF论坛中开始了一个主题:http://forum.primefaces.org/viewtopic.php?f=3&t=40055

1 个答案:

答案 0 :(得分:3)

 <p:galleria id="photoGalleria"
                    panelHeight="400"
                    panelWidth="450"
                    widgetVar="photoGalleriaWidgetVar"
                    style="width: 100%;"
                    autoPlay="false"
                    value="#{partEditBean.selectedPart.partPictures}" var="img">
            <p:panelGrid columns="1" styleClass="wf" style="text-align: center;">
                <p:commandButton id="delete_pic_button"
                                 update="@form"
                                 value="#{msg['part_view.delete']}" process="@this"
                                 actionListener="#{partImageEditBean.deleteListener}">
                    <f:param name="pic_id" value="#{img.picId}"/>
                </p:commandButton>
            </p:panelGrid>
            <p:graphicImage styleClass="wf galleriaOver" value="#{img.picUrlPath}"
                            title="#{partEditBean.selectedPart.partTreeNode.partPathName}"
                            onclick="window.open('#{img.picUrlPath}','_blank');"/>
        </p:galleria>



FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("pic_id")