用于生成列的 Primefaces DataTable var 不显示任何行
Primefaces DataTable var used to generate Columns does not display any row
我正在使用 Primefaces DataTable,它使用的是来自提供列表的 bean 的值。我们为列表中的每个项目显示一行。
我还有另一个列表,用于显示每行中每一列的值。
下面的例子效果很好。
使用 BEAN 的值
<p:dataTable var="item" value="#{bean.items}">
<p:columns var="value" value="#{bean.values}">
<p:outputLabel value="#{value}"/> <!--[WORKS FINE !!!]-->
</p:columns>
</p:dataTable>
如果我不使用 bean 的值,而是尝试使用项目本身的值,它不会显示任何内容!
使用项目本身的价值
<p:dataTable var="item" value="#{bean.items}">
<p:columns var="value" value="#{item.values}">
<p:outputLabel value="#{value}"/> <!--[DOES NOT DISPLAY ANYTHING !!!]-->
</p:columns>
</p:dataTable>
bean 如下所示,它在使用数据表中的值时显示数据表中的行。
@Named("bean")
@ViewScoped
public class Bean implements Serializable
{
private static final long serialVersionUID = 1L;
private List<Item> _items = new LinkedList<>();
private List<String> _values = new LinkedList<>();
public List<Item> getItems() {return _items;}
public void setItems(List<Item> items) {_items = items;}
public List<String> getValues() {return _values;}
public void setValues(List<String> values) {_values = values;}
//[BUILD]
@PostConstruct public void init()
{
_items.add(new Item());
_items.add(new Item());
_items.add(new Item());
}
}
Item 对象如下所示,使用那里的值时不显示行。
public class Item
{
private List<String> _values = new LinkedList<>();
public List<String> getValues() {return _values;}
public void setValues(List<String> values) {_values= values;}
//[BUILD]
public Item()
{
_values.add("value0");
_values.add("value1");
_values.add("value2");
}
}
为什么在我使用外部对象的值列表时 primeface 数据表不显示任何行,如下所示???
工作正常!
<p:dataTable var="item" value="#{bean.items}">
<p:columns var="value" value="#{bean.values}"><!--[USING BEAN LIST<STRING> -->
<p:outputLabel value="#{value}"/>
不起作用!
<p:dataTable var="item" value="#{bean.items}">
<p:columns var="value" value="#{item.values}"><!--[USING ITEM LIST<STRING> -->
<p:outputLabel value="#{value}"/>
正如您从展示中看到的那样
https://www.primefaces.org/showcase/ui/data/treetable/columns.xhtml
列(以及列数)不得依赖于当前项目。
我正在使用 Primefaces DataTable,它使用的是来自提供列表的 bean 的值。我们为列表中的每个项目显示一行。
我还有另一个列表,用于显示每行中每一列的值。
下面的例子效果很好。
使用 BEAN 的值
<p:dataTable var="item" value="#{bean.items}">
<p:columns var="value" value="#{bean.values}">
<p:outputLabel value="#{value}"/> <!--[WORKS FINE !!!]-->
</p:columns>
</p:dataTable>
如果我不使用 bean 的值,而是尝试使用项目本身的值,它不会显示任何内容!
使用项目本身的价值
<p:dataTable var="item" value="#{bean.items}">
<p:columns var="value" value="#{item.values}">
<p:outputLabel value="#{value}"/> <!--[DOES NOT DISPLAY ANYTHING !!!]-->
</p:columns>
</p:dataTable>
bean 如下所示,它在使用数据表中的值时显示数据表中的行。
@Named("bean")
@ViewScoped
public class Bean implements Serializable
{
private static final long serialVersionUID = 1L;
private List<Item> _items = new LinkedList<>();
private List<String> _values = new LinkedList<>();
public List<Item> getItems() {return _items;}
public void setItems(List<Item> items) {_items = items;}
public List<String> getValues() {return _values;}
public void setValues(List<String> values) {_values = values;}
//[BUILD]
@PostConstruct public void init()
{
_items.add(new Item());
_items.add(new Item());
_items.add(new Item());
}
}
Item 对象如下所示,使用那里的值时不显示行。
public class Item
{
private List<String> _values = new LinkedList<>();
public List<String> getValues() {return _values;}
public void setValues(List<String> values) {_values= values;}
//[BUILD]
public Item()
{
_values.add("value0");
_values.add("value1");
_values.add("value2");
}
}
为什么在我使用外部对象的值列表时 primeface 数据表不显示任何行,如下所示???
工作正常!
<p:dataTable var="item" value="#{bean.items}">
<p:columns var="value" value="#{bean.values}"><!--[USING BEAN LIST<STRING> -->
<p:outputLabel value="#{value}"/>
不起作用!
<p:dataTable var="item" value="#{bean.items}">
<p:columns var="value" value="#{item.values}"><!--[USING ITEM LIST<STRING> -->
<p:outputLabel value="#{value}"/>
正如您从展示中看到的那样 https://www.primefaces.org/showcase/ui/data/treetable/columns.xhtml 列(以及列数)不得依赖于当前项目。