2012-03-08 24 views
3

我想使用p:orderList和p:panel組件來實現列表元素的重新排序。最初在列表中存在POJO,但即使使用字符串列表也會出現問題。OrderList中的Primefaces面板

還有就是我的豆:

public class BackingBean { 

    private List<String> list; 

    public void addDate() { 
     list.add(new Date().toString()); 
    }  

    // Getters and setters... 
} 

我的頁面源:

<p:orderList id="videos" value="#{bean.list}" var="date" itemValue="#{date}" 
    controlsLocation="none"> 
    <p:column > 
     <p:panel header="#{date}" toggleable="true" toggleSpeed="500"> 
      FC Barcelona is one of only three clubs... 
     </p:panel> 
    </p:column> 
</p:orderList> 

的問題是,我每次切換面板之一,所有的面板最小化和最大化幾次,即如果列表中有三個元素,則所有面板將被最大化/最小化三次。我錯了嗎?

+0

是否在orderedList中支持widgetVar的多個面板?看起來,JavaScript變量「面板」用於列表中的所有面板。你可以在螢火蟲中查看它。 – djmj 2012-03-08 16:39:50

+0

我認爲@djmj是對的。爲什麼你要指定'widgetVar'屬性。你在JavaScript的某個地方使用它嗎? – 2012-03-08 19:27:17

+0

即使沒有'widgetWar',也會發生這種情況。 我在primefaces論壇上有一個答案「問題是,列表中的所有面板都獲得相同的ID,因此切換切換所有面板」。但我不知道我應該用什麼來代替面板 – nikagra 2012-03-09 08:23:04

回答

2

那麼,取決於你是否真的需要重新排序功能。如果你可以承受沒有它,我會嘗試用戶界面:重複,而不是p:orderList。它爲每個div生成原始ID,因此您只能在當時切換一個面板。希望它可以幫助

編輯: 我做了一個自定義的「toggler」,讓您可以切換你的面板甚至在電話號碼:單獨orderList。

 <p:orderList id="videos" value="#{yourBean.list}" var="dataItem" itemValue="#{dataItem}" 
        controlsLocation="none"> 
      <p:column> 
       <p:panel id="togglePanel"> 
         <f:facet name="header"> 
          <h:outputText value="#{dataItem}" /> 
          <p:commandButton value="+" onclick="showToggle(this)" style="float: right;"/> 
          <p:commandButton value="-" onclick="hideToggle(this)" style="float: right;"/> 
          <div style="clear: both"/> 
         </f:facet> 
        <div> 
         FC Barcelona is one of only three clubs... 
        </div> 
       </p:panel> 
      </p:column> 
     </p:orderList> 

而且簡單的腳本:

<script type="text/javascript"> 

function hideToggle(param) { 
    jQuery(param).closest("div").next().slideUp('slow',null);  
} 
function showToggle(param) { 
    jQuery(param).closest("div").next().slideDown('slow',null);  
} 

</script> 

也許有一個更好的解決辦法,但我相信你明白了吧。希望它有幫助。