如何在Primefaces中将contextMenu与ContentFlow一起使用

时间:2015-07-03 07:58:05

标签: jsf primefaces contextmenu contentflow

对于蹩脚的问题提前抱歉,我还是JSF / Primefaces的新手。我想将ContextMenu与ContentFlow一起使用。例如,当用户右键单击ContentFlow控件时,我想显示上下文菜单,其中包含Delete,Add New等操作。我在JSF页面中的代码如下所示:

<p:contentFlow id="productpictures" 
               value="#{myviewscopedbean.productpictures}" 
               var="picture" >
     <p:graphicImage url="#{picture}" styleClass="content"/>
</p:contentFlow> 
<p:contextMenu  for="productpictures" >
     <p:menuitem value="Refresh" update="productpictures" />
     <p:separator/>
     <p:menuitem value="Add New" onclick="PF('dlgcreate').show()" />
     <p:menuitem value="Delete" actionListener="#{myviewscopedbean.removePicture}"
                                update="productpictures" />
</p:contextMenu>

我正在与之抗争的问题 - 如何确定“活跃”的问题。内容流中的图像以及如何将其传递给myviewscopedbean.removePicture()方法。

我发现了一些提示here,但仍然感到困惑 - 请帮忙!

1 个答案:

答案 0 :(得分:1)

您可以使用p:remoteCommandJQuery来获取图片并从图片标题中读取图片。下面的代码将标题作为选定图像。

您修改后的代码

   <p:contentFlow id="productpictures" 
                   value="#{myviewscopedbean.productpictures}" 
                   var="picture" >
         <p:graphicImage url="#{picture}" styleClass="content"/>
         <div class="caption">#{picture}</div>
    </p:contentFlow> 
    <p:contextMenu  for="productpictures" >
         <p:menuitem value="Refresh" update="productpictures" />
         <p:separator/>
         <p:menuitem value="Add New" onclick="PF('dlgcreate').show()" />
         <p:menuitem value="Delete" oncomplete="removePicture([{name:'selectedImage', value: $('.item.active div.caption').text()}]);"
                                     />
    </p:contextMenu>

<p:remoteCommand name="removePicture" actionListener="#{myviewscopedbean.removePicture}" update="productpictures"/>

Java

@ViewScoped('myviewscopedbean')
class MyBean{
    public void removePicture(){
       Map<String, String[]> paramValues = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterValuesMap();
       String[] selectedImages = paramValues.get("selectedImage");        
    }

}