我正在尝试使用<p:columns>
,但是当我将它提供给它时,它什么也没有呈现,它是封闭正在迭代 List
的对象的属性。<p:dataTable>
我可以在using中成功使用该列表<ui:repeat>
或访问其中的一个条目。当将列表分配给支持 bean 的属性时。但是当使用-object的属性时,该位置不会呈现任何内容。没有错误信息等。 <p:dataTable>
<p:column>
<p:columns>
Car
Primefaces 4.0 用户指南Dynamic Columns
中的部分让我感到困惑,因为使用了代码示例,但仍然有一个值,而不是- 我不知道应该如何使用它。cars[colIndex]
<p:columns>
cars
附加信息:
我需要列列表<p:columns>
才能成为该类的一部分,因为我想为具有不同属性的多个类重用代码,因此需要不同的列。
Facelets 代码:
<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">
<h:head></h:head>
<h:messages />
<h:form>
<!-- works -->
<ui:repeat value="#{carBean.cars}" var="car">
ui:repeat: #{car.features}
</ui:repeat>
<p:dataTable value="#{carBean.cars}" var="car">
<!-- works too -->
<p:column>
p:column: #{car.features.get(0)}
</p:column>
<!-- works too -->
<p:columns value="#{carBean.beanFeatures}" var="feature" columnIndexVar="colIndex">
carBean p:columns: #{feature}
</p:columns>
<!-- renders nothing -->
<p:columns value="#{car.features}" var="feature" columnIndexVar="colIndex">
car p:columns: #{feature}
</p:columns>
</p:dataTable>
</h:form>
</html>
后备豆:
package myPackage;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean
@ViewScoped
public class CarBean implements Serializable {
List<Car> cars;
List<String> beanFeatures;
@PostConstruct
public void init(){
cars = new ArrayList<Car>();
Car car1 = new Car();
car1.features.add("windows");
car1.features.add("fridge");
Car car2 = new Car();
car2.features.add("wheels");
car2.features.add("nuclear engine");
cars.add(car1);
cars.add(car2);
beanFeatures = car1.getFeatures();
}
public List<Car> getCars() {
return cars;
}
public void setCars(List<Car> cars) {
this.cars = cars;
}
public List<String> getBeanFeatures() {
return beanFeatures;
}
public void setBeanFeatures(List<String> beanFeatures) {
this.beanFeatures = beanFeatures;
}
}
Car
班级_
package myPackage;
import java.util.ArrayList;
import java.util.List;
public class Car {
List<String> features = new ArrayList<String>();
public List<String> getFeatures() {
return features;
}
public void setFeatures(List<String> features) {
this.features = features;
}
}