【问题标题】:commandButton for removing images from p:galleria用于从 p:galleria 中删除图像的命令按钮
【发布时间】:2014-10-27 11:11:27
【问题描述】:

我正在使用 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}" 显示正常,所以我怀疑 imageactionListeneraction 属性中没有正确解析。

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

someBean.imagesList&lt;String&gt;(图像路径)。

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

我也考虑过在 Galleria 组件之外添加一个按钮,但我不清楚如何在不修改 p:galleria 组件的情况下确定所选图像。 还有一个关于这个(1岁)How to get the selected image from <p:galleria

的未回答问题

更新: 使用ui:paramc:set"test" 附加到image 实际上会给我deleteImage 方法中的字符串"test",但是h:outputText 组件正确地呈现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

【问题讨论】:

  • 你能试试这个肮脏的小技巧吗:actionListener="#{someBean.deleteImage(image.concat(''))}"
  • 遗憾的是这并没有改变任何东西。甚至image.concat('test') 也给了我一个空字符串。我在原始帖子中忘记提到的是正确传递了一个文字字符串。
  • 正如您可能想的那样,我的想法是在价值可用时抓住它。您能再尝试一件事吗:&lt;c:set var="img" value="#{image}/&gt;"&lt;p:commandButton&gt; 之前,#{someBean.deleteImage(img)} 在行动侦听器中?不过,当第一个建议失败时,我不希望这会起作用。
  • 也不起作用 - 有趣的是#{someBean.deleteImage(null)} 也给了我一个空字符串,所以image 可能在生成动作侦听器的 JS 时解析为 null,并且 PF 替换带有空字符串的 null。
  • 我刚刚做了一个有趣的观察:&lt;c:set var="img" value="#{image}test"/&gt;actionListener="#{imageHelper.deleteImage(img)}" 将在方法中给我字符串 "test"。但是&lt;h:outputText value="#{img}"/&gt; 正确地渲染了附加了测试的图像路径。我现在彻底糊涂了……

标签: jsf primefaces


【解决方案1】:
 <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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    相关资源
    最近更新 更多