Primefaces Dataexporter和get方法

时间:2012-05-31 08:05:00

标签: jsf-2 primefaces

使用一个只包含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>

谢谢,

菲利普

1 个答案:

答案 0 :(得分:2)

可能两个组件的实现方式不同。

但是你可以这样访问列表元素:

#{myList[n]}

其中n是列表索引。