我使用的是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
未在actionListener
或action
属性中正确解析。
如果我在xhtml中输入文字字符串,例如#{someBean.deleteImage('deleteme')}
它正确传递。传递null
也会给出一个空字符串。
someBean.images
是List<String>
(图片路径)。
我不知所措:/有人能指出我正确的方向吗?这是一个错误还是我做错了什么?
我还考虑过在galleria组件外添加一个按钮,但我不清楚如何确定所选图像而不必修改p:galleria组件。 还有一个未解决的问题(1岁)How to get the selected image from <p:galleria
更新
使用"test"
或image
将ui: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
答案 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")