使用一个只包含String列表的简单类,我可以使用类List的p:dataTable
方法查看get(int)
中的所有元素,但是当我尝试导出它时它会失败使用p:dataExporter
组件。
这是Java源代码:
@ManagedBean
@SessionScoped
public class MainClass {
private List<ArrayList<String>> listOfListOfString;
public List<ArrayList<String>> getListOfListOfString() {
return listOfListOfString;
}
public void setListOfListOfString(List<ArrayList<String>> listOfListOfString) {
this.listOfListOfString = listOfListOfString;
}
public MainClass() {
listOfListOfString = new ArrayList<ArrayList<String>>();
ArrayList<String> firstList = new ArrayList<String>();
firstList.add("a");
firstList.add("b");
listOfListOfString.add(firstList);
ArrayList<String> secondList = new ArrayList<String>();
secondList.add("1");
secondList.add("2");
listOfListOfString.add(secondList);
}
}
和XTHML代码:
<h:body>
Hello from Facelets
<h:form prependId="false">
<p:dataTable id="tbl" var="myList" value="#{mainClass.listOfListOfString}" paginator="true" rows="10" >
<p:column headerText="First column">
<h:outputText value="#{myList.get(0)}"/>
</p:column>
<p:column headerText="Second column">
<h:outputText value="#{myList.get(1)}"/>
</p:column>
</p:dataTable>
<h:commandLink value=" csv">
<p:dataExporter type="csv" target="tbl" fileName="userList" />
</h:commandLink>
</h:form>
</h:body>
点击csv链接时的错误堆栈:
For input string: "get"
- Stack Trace
java.lang.NumberFormatException: For input string: "get"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.parseInt(Integer.java:499)
at javax.el.ListELResolver.coerce(ListELResolver.java:173)
at javax.el.ListELResolver.getType(ListELResolver.java:72)
您是否知道为什么p:dataTable
可以使用get(int)
方法而p:dataExporter
无法使用?{/ p>
谢谢,
菲利普
答案 0 :(得分:2)
可能两个组件的实现方式不同。
但是你可以这样访问列表元素:
#{myList[n]}
其中n
是列表索引。