使用しようとしています<p:columns>
が、囲んでいるオブジェクトのプロパティであるa をフィードすると、何もレンダリングされません。 List
<p:dataTable>
そのリストを正常に使用したり、 using<ui:repeat>
内のエントリの 1 つにアクセスしたりできます。バッキング Bean のプロパティにリストを割り当てるとき。しかし、オブジェクトのプロパティを使用すると、その場所には何もレンダリングされません。エラーメッセージ等はありません。 <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>
バッキング Bean:
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;
}
}