我使用Primefaces 5.0創建動態數據表。Primefaces靜態和動態列在數據表中
我的DataObject有一些必填字段和一個可選的「tupel」(鍵值對)列表。可選列表的大小可能有所不同。因此我需要一個動態機制來顯示Primefaces.DataTable中的DataObject列表。
我的做法是這樣的:
public class DataObject {
private String staticval1;
private String staticval2;
private List<Tupel> optionalValues;
// .. getter, setter, hashCode, toString.....
}
public class Tupel{
private String id;
private String value;
}
@ManagedBean
@ViewScoped
public class TableOverviewBean {
private List<DataObject> data;
@EJB
private IMyDao myDao;
@PostConstruct
public void init() {
data = myDao.findAll();
}
public List<DataObject> getData() {
return data;
}
public void setData(List<DataObject> data) {
this.data = data;
}
}
<h:form>
<p:dataTable value="#{tableOverviewBean.data}" var="data">
<p:column headerText="static1">
<h:outputText value="#{data.staticval1}" />
</p:column>
<p:column headerText="static2">
<h:outputText value="#{data.staticval2}" />
</p:column>
<p:columns value="#{data.optionalValues}" var="opt" headerText="#{opt.id}">
<h:outputText value="#{opt.value}" />
</p:columns>
</p:dataTable>
</h:form>
但是,這是行不通的。動態列不會呈現。 我該如何解決我的問題?
編輯: 預期結果:
staticval1 | staticval2 | dynamic_id1 | dynamic_id2 | ... | dynmic_idn
----------------------------------------------------------------------
static1a | static2a | dyna_value1a| dyna_value2a | ... | dyna_valu3a
static1b | static2b | dyna_value1b| dyna_value2b | ... | dyna_valu3b
static1c | static2c | dyna_value1c| dyna_value2c | ... | dyna_valu3c
這兩種解決方案都不能真正解決我的問題。我添加了一個示例輸出到我的問題。有沒有辦法得到這樣的桌子? – veote 2014-09-08 09:14:45
您是否閱讀過第一段?如果你想實現你需要的佈局,你必須將數據從一行移動到一個bean並提供固定數量的列。 – BalusC 2014-09-08 09:34:16
是的,我讀過。我的行具有相同數量的列。但是,如果我獲得另一個數據集,列的數量可能會有所不同。例如。有一次有10個可選值(每個數據對象有10個)。另一組可能有8個optinal值。 – veote 2014-09-08 09:49:06