Java Primefaces使用动态数据进行拖放
我对primefaces是个新手,我用p:Dragable commponent解决了这个问题。 这是我的网站,使用p:draggable组件,与primefaces showcases完全相同Java Primefaces使用动态数据进行拖放,java,jsf,primefaces,draggable,Java,Jsf,Primefaces,Draggable,我对primefaces是个新手,我用p:Dragable commponent解决了这个问题。 这是我的网站,使用p:draggable组件,与primefaces showcases完全相同 <p:fieldset legend="PreparedData"> <p:dataGrid id="currentData" columns="1" var="res" value="#{SomeBean.data}">
<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" />
这是我的豆子
public class SomeBean{
private List<SomeObjects> data = new ArrayList<SomeObjects>();
public void addItem(){
data.add(new SomeObjects("someName"));
}
//GETTERS SETTERS
}
公共类SomeBean{
私有列表数据=新的ArrayList();
公共无效附加项(){
添加(新的SomeObjects(“someName”);
}
//吸气剂二传手
}
现在的问题是,当我向该列表添加新数据时,它会出现,但不可拖动。使这些数据可拖动的唯一方法是将它们设置到该bean的构造函数中。
有人知道我在哪里犯了错吗?我已经读过Primefaces手册了,但里面什么都没有。在这里,他们只是默默地假设数据将只从constructor设置。
谢谢您的回答。您提交的示例代码运行良好。检查您正在使用的代码,有时试图混淆代码数据(如变量名、可能包含敏感信息的包名),我们会忽略或更改与当前错误相关的内容 这是我用来测试您的示例的代码(ipsis 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;
}
}
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>
测试了您的示例,它在我的环境中运行良好。您使用的是什么版本的primefaces、jsf等?(我的是在primefaces 3.3.1上测试的)primefaces 3.4.1 Glassfish 3.1.2 JSF 2.0hmm u是对的。。这真的适用于新鲜页面。。。必须找出我当前页面上的错误。谢谢你的回答。现在它可以正常工作了。我删除了droppable,现在它可以工作了,所以感谢Mindwin,因为您的评论让我找到了解决方案。我希望droppable在那里,但我们会看看是否会有问题。我只是觉得问题出在拖拉标签上。
<!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>