如何从p:orderList获取所选项目?

时间:2013-06-05 06:02:04

标签: jsf primefaces

我想从orderList获取所选项目。在我看来,这个功能缺失。 PF中是否有功能?或者是否有可能的解决方法?

我非常感谢你的回答!

我的技术堆栈:

  • Hibernate:4.0.1.Final
  • Spring:3.1.1.RELEASE
  • Primefaces:3.5
  • jsf-version:2.2.0-m08
  • PrimefacesMobile-version:0.9.3
  • Apache Tomcat / 7.0.12

3 个答案:

答案 0 :(得分:1)

我已使用删除按钮解决了这个问题。代码段如下:

<p:orderList id="layersList" value="#{mappingLayerController.layers}" 
             converter="layerConverter" var="layer" itemValue="#{layer}" 
             controlsLocation="left">
 <p:column>
  <h:outputText value="#{layer.layerName}"/>
 </p:column>
 <p:column style="width: 4%">
  <p:commandButton icon="ui-icon-close" actionListener="#{controller.deleteLayer()}">
   <f:param name="layerName" value="#{layer.layerName}" />
  </p:commandButton>
 </p:column>
</p:orderList>

在支持bean中,您可以通过f:param标记获取提供的参数:

String layerName = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("layerName");

我希望这会有所帮助。

答案 1 :(得分:1)

我遇到了同样的问题,试图为orderList中的每个项目创建一个编辑操作。我尝试将var传递给操作,创建一个动作侦听器与一个属性和一个选择侦听器都没有成功。

我最终使用了dataTable ... draggableRows="true"(请参阅展示中的data table reorder)。在数据表中,我可以简单地将var作为参数传递给动作......所以我想。我遇到了一个问题,重新排序后,点击编辑按钮给了我错误的项目。我创建了一个解决方法,即在重新排序时我更新模型并重绘表格。它有效,但感觉不对。

<p:dataTable id="myTable"
             value="#{myBean.myItems}"
             var="item"
             sortBy="#{item.orderNumber}" sortOrder="ascending"
             draggableRows="true">
    ...
    <p:column headerText="Actions">
        <p:commandButton title="Edit"
                         action="#{myBean.edit(item)}"
                         process="@this">
    </p:column>
    <p:ajax event="rowReorder"
            listener="#{myBean.onSlotContentReorder}"
            update="myTable"/>
</p:dataTable>

答案 2 :(得分:1)

在PrimeFaces 5及更高版本中可以使用。没有开箱即用的功能,但可以通过附加的所选项目列表轻松实现。见例子

Java代码

    <h:panelGroup id="listGroup">
        <p:orderList id="list" value="#{bean.allItems}"
            var="item" itemLabel="#{item.code}" itemValue="#{item}"
            converter="#{itemConverter}" controlsLocation="none">
            <f:facet name="caption">#{msg.listName}</f:facet>
            <p:ajax event="select" listener="#{bean.onSelect}" />
            <p:ajax event="unselect" listener="#{bean.onUnselect}" />
        </p:orderList>
        <p:contextMenu id="listMenu" for="list">
            <p:menuitem value="#{msg.delete}"
                actionListener="#{bean.deleteSelected}"
                update="listGroup, messages"
                rendered="#{not empty bean.allItems}" />
        </p:contextMenu>
    </h:panelGroup>

<强> XHTML

else if(date_holder.equals("today"))
           {
               DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
               Calendar cal = Calendar.getInstance();
               System.out.println(dateFormat.format(cal.getTime()));
           }