2014-02-19 2 views
0

В настоящее время я реализую упорядочиваемый список, используя компонент PrimeFaces, встроенный внутри a. Мне удалось получить список, чтобы он отображался правильно с моими товарами. Однако, когда я сохранил список и отправил его обратно на сервер, перегруппированные элементы по какой-то причине не отразились в бэкбонге. Поскольку витрина Primefaces смогла увидеть изменения, что я делаю неправильно?Прайсы p: orderList java backing list не обновляется

XHTML Отрывок:

<h:form id="confirmDialogForm"> 
      <p:confirmDialog id="arrangeProjDialog" widgetVar="arrangeDlg" width="600" 
       header="Meeting Order" 
       appendToBody="true" message="Drag and drop to rearrange meeting order">  

      <p:orderList id="arrangeProjDialogList" 
       value="#{adminMeetingListBean.orderProjList}" 
       converter="#{adminMeetingListBean.rowConverter}" 
       var="po" 
       controlsLocation="left" 
       styleClass="wideList" 
       itemLabel="#{po.projectTitle}" 
       itemValue="#{po}" 
       > 
       <f:facet name="caption">Proposals</f:facet> 
      </p:orderList> 

       <p:commandButton value="Save" ajax="true" process="arrangeProjDialogList @this" 
        actionListener="#{adminMeetingListBean.updateProposalMeetingOrder}" onclick="arrangeDlg.hide();"> 
       </p:commandButton> 
       <p:button value="Cancel" onclick="arrangeDlg.hide(); return false;" /> 
      </p:confirmDialog> 
     </h:form> 

Резервное Bean:

public void updateProposalMeetingOrder() { 

    if (selectedMeeting != null) { 

     orderProjTitles.get(0); 

     meetingService.updateMeetingProjSequence(orderProjList, selectedMeeting.getMeetingId()); 
    } 

} 

Список список POJO "ProposalOrderRow" объектов. Это определение:

public class ProposalOrderRow implements Serializable { 

    private static final long serialVersionUID = -5012155654584965160L; 

    private int dispSeq; 
    private int appId; 
    private int assignmentId; 
    private String refNo; 
    private String projectTitle; 

    public int getDispSeq() { 
     return dispSeq; 
    } 

    public void setDispSeq(int dispSeq) { 
     this.dispSeq = dispSeq; 
    } 

    public int getAppId() { 
     return appId; 
    } 

    public void setAppId(int appId) { 
     this.appId = appId; 
    } 

    public String getRefNo() { 
     return refNo; 
    } 

    public void setRefNo(String refNo) { 
     this.refNo = refNo; 
    } 

    public String getProjectTitle() { 
     return projectTitle; 
    } 

    public void setProjectTitle(String projectTitle) { 
     this.projectTitle = projectTitle; 
    } 

    public int getAssignmentId() { 
     return assignmentId; 
    } 

    public void setAssignmentId(int assignmentId) { 
     this.assignmentId = assignmentId; 
    } 
} 

конвертер:

@FacesConverter("proposalOrderRowConverter") 
public class ProposalOrderRowConverter implements Converter { 

    private List<ProposalOrderRow> orderRows; 

    @Override 
    public Object getAsObject(FacesContext context, UIComponent component, String newValue) { 

     if (newValue.isEmpty()) { 
      return null; 
     } 

     for (ProposalOrderRow item : orderRows) { 

      String refNo = item.getRefNo(); 

      if (refNo.equals(newValue)) { 
       return item; 
      } 

     } 

     return null; 
    } 

    @Override 
    public String getAsString(FacesContext context, UIComponent component, Object value) { 

     if (value == null) { 
      return ""; 
     } 

     ProposalOrderRow row = (ProposalOrderRow) value; 

     String output = row.getRefNo(); 

     return output; 
    } 

    public List<ProposalOrderRow> getOrderRows() { 
     return orderRows; 
    } 

    public void setOrderRows(List<ProposalOrderRow> orderRows) { 
     this.orderRows = orderRows; 
    } 

} 
+0

Где ваш конвертер для OrderList ?? – Makky

+0

Спасибо. Я отправил конвертер, как было задано. Проблема в том, что при вызове getAsString преобразователя метод getAsObject никогда не вызывается. – futureelite7

+0

Вам нужно добавить тег converter = "" в p: orderList. – Makky

ответ

0

Эта проблема вызвана appendToBody = "истина" в диалоговом окне подтверждения. Установив его в false, проблема решена.

См ссылка здесь: link

Смежные вопросы