2012-05-31 47 views
1

有了一个简单的类至极只包含一个字符串列表的列表中,我可以看到它在p:dataTable所有元素与类List的get(int)方法,但是当我尝试与p:dataExporter导出此失败零件。Primefaces 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不能?

感谢,

菲利普

回答

2

大概两个组件均已不同的方式实现。

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

#{myList[n]} 

其中n是列表索引。

+0

完美。有用!但奇怪的是get()方法不能用于List对象。 –

+0

好听。请不要忘记将我的答案标记为已接受(点击问题左侧的复选标记)。 –