2012-11-26 42 views
0

我對primefaces很新穎,我用p:draggable commponent運行到這個問題。 這是我的網站使用p:draggable組件完全在primefaces展示中。Primefaces使用動態數據進行拖放

  <p:fieldset legend="PreparedData"> 

       <p:dataGrid id="currentData" columns="1" var="res" value="#{SomeBean.data}"> 
        <p:column> 
         <p:panel id="draggedres" header="#{res.name}"> 
          <h:panelGrid columns="1"> 
           <h:outputText value="#{res.name}"/> 
          </h:panelGrid> 

         </p:panel> 
         <p:draggable for="draggedres" /> 

        </p:column> 
       </p:dataGrid> 
      </p:fieldset> 
      <p:commandButton value="Add" actionListener="#{SomeBean.addItem}" update="currentData" /> 

Theres my bean SomeBean。

public class SomeBean{ 

    private List<SomeObjects> data = new ArrayList<SomeObjects>(); 

    public void addItem(){ 
     data.add(new SomeObjects("someName")); 
    } 

    //GETTERS SETTERS     
} 

現在的問題是,當我的新數據添加到列表出現,但不能拖動。只有如何讓這些數據可拖動才能將它們設置爲該bean的構造函數。 任何人都知道我犯了什麼錯誤?我已經閱讀了Primefaces手冊,但沒有涉及它。在那裏,他們只是默默地認爲數據只能從構造器中設置。 感謝您的任何答案。

+1

測試你的例子,它我在我的環境中工作得很好。您使用的是什麼版本的primefaces,jsf等? (我在primefaces 3.3.1上進行了測試) – Mindwin

+0

PrimeFaces 3.4.1 Glassfish 3.1.2 JSF 2.0 –

+0

嗯,你是對的..這真的可以在新鮮的頁面上...無論如何,必須找出我的當前頁面有什麼問題謝謝你的回答 –

回答

0

您提交的示例代碼工作得很好。檢查你正在使用的代碼,有時試圖混淆代碼數據(比如變量名稱,可能包含敏感信息的包名稱),我們忽略或修改與當前bug有關的內容。

這是代碼(IPSI的端口literis)我用於測試例如:

SomeBean.java

import java.util.ArrayList; 
import java.util.List; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ViewScoped; 


@ManagedBean 
@ViewScoped 
public class SomeBean { 
private List<SomeObjects> data = new ArrayList<SomeObjects>(); 


public void addItem(){ 
data.add(new SomeObjects("someName")); 
} 


public List<SomeObjects> getData() { 
    return data; 
} 


public void setData(List<SomeObjects> data) { 
    this.data = data; 
} 

} 

SomeObject.java

public class SomeObjects { 

private String name; 

public SomeObjects(String string) { 
    this.setName(string); 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getName() { 
    return name; 
} 

} 

draggable.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:p="http://primefaces.org/ui" 
xmlns:c="http://java.sun.com/jsp/jstl/core"> 
<h:head> 
</h:head> 
<h:body> 
    <p:separator styleClass="espacador" /> 
    <p:fieldset legend="PreparedData"> 
     <p:dataGrid id="currentData" columns="1" var="res" value="#{someBean.data}"> 
      <p:column> 
       <p:panel id="draggedres" header="#{res.name}"> 
        <h:panelGrid columns="1"> 
         <h:outputText value="#{res.name}" /> 
        </h:panelGrid> 
       </p:panel> 
       <p:draggable for="draggedres" /> 
      </p:column> 
     </p:dataGrid> 
    </p:fieldset> 
    <p:commandButton value="Add" actionListener="#{someBean.addItem}" update="currentData" /> 
<h:body> 
</html>