1

文字列のリストのリストのみを含む単純なクラスでは、クラスListp:dataTableget(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

ありがとう、

フィリップ

4

1 に答える 1

2

おそらく、両方のコンポーネントの実装が異なります。

ただし、次の方法でリスト要素にアクセスできます。

#{myList[n]}

ここnで、はリストインデックスです。

于 2012-05-31T08:14:15.573 に答える