2013-06-05 2 views
1

Я хочу получить выбранный товар из orderList. Мне кажется, что эта функциональность отсутствует. Есть ли функциональность в PF? Или есть возможное обходное решение?Как получить выбранный элемент из списка p: orderList?

Я действительно ценю ваш ответ!

Мой стек технологии:

  • Hibernate: 4.0.1.Final
  • Spring: 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> 

И в бэк-бин вы можете получить предоставленный параметр через F: пары бирку:

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

Я надеюсь, что это помогает.

+0

ooh, было сложно найти его :) –

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> 
Смежные вопросы