2013-06-05 26 views
1

我想從orderList中獲取所選項目。在我看來,這個功能缺失。 PF中是否有功能?或者是否有可能的解決方法?如何從p:orderList中獲取所選項目?

我真的很感謝你的回答!

我的技術堆棧:

  • 休眠:4.0.1.Final
  • 春:3.1.1.RELEASE
  • Primefaces:3.5
  • JSF的版本:2.2.0-M08
  • PrimefacesMobile版本:0.9.3
  • 的Apache Tomcat/7.0.12
+0

請出示你有什麼想做到這一點。 –

+0

@AlexandreLavoie我已經實現了像列表中的'orderedList'。但是,在我看來,有序列表中沒有任何功能可以返回選定的項目。因此,我正在尋找一個可能的解決方案,爲這個問題... – maximus

+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"); 

我希望這有助於。

+0

哦,很難找到它:) – 2015-05-17 19:50:33

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> 
0

它可能在PrimeFaces 5和更高版本中。沒有開箱功能,但可以通過選定項目的附加列表輕鬆實現。見例如

Java代碼

private List<Record> allItems; // with getter and setter 
private List<Record> selectedItems; // with getter and setter 

public void onSelect(SelectEvent event) { 
    if (null == event || null == event.getObject()) { 
     return; 
    } 
    if (!event.isCtrlKey()) { 
     setSelectedItems(new ArrayList<Record>()); 
    } 
    Record item = (Record)event.getObject(); 
    if (!getSelectedItems().contains(item)) { 
     getSelectedItems().add(item); 
    } 
} 

public void onUnselect(UnselectEvent event) { 
    if (null == event || null == event.getObject()) { 
     return; 
    } 
    Record item = (Record)event.getObject(); 
    if (getSelectedItems().contains(item)) { 
     getSelectedItems().remove(item); 
    } 
} 

public void deleteSelected() { 
    if (getAllItems().isEmpty()) { 
     addErrorMessage("listEmpty"); 
     return; 
    } 
    if (getSelectedItems().isEmpty()) { 
     addErrorMessage("noItemSelected"); 
     return; 
    } 
    for (Record item : getSelectedItems()) { 
     if (getAllItems().contains(item)) { 
      getAllItems().remove(item); 
     } 
    } 
} 

XHTML

<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> 
相關問題