VisualForceレポートにXMLを消費し、データを表示します
-
29-09-2019 - |
質問
第一に、この質問には少し紹介が必要なので、私と一緒に我慢してください。
高いレベルは、XMLをApexコントローラーに返す外部のWebサービスに接続していることです。アイデアは、VisualForceページの素敵な表形式に戻されたXMLを表示したいということです。戻ってくるXMLの形式は、次のようになります。
<Wrapper><reportTable name='table_id' title='Report Title'>
<row>
<Element1><![CDATA[campaign_id]]></Element1>
<Element2><![CDATA[577373]]></Element2>
<Element3><![CDATA[4129]]></Element3>
<Element4 dataFormat='2' dataSuffix='%'><![CDATA[0.7151]]></Element4>
<Element5><![CDATA[2010-04-04]]></Element5>
<Element6><![CDATA[2010-05-03]]></Element6>
</row>
</reportTable>
...
現在、XMLDOMユーティリティクラス(XML関数用SFによって開発された)を使用して、このデータを「行」カスタムオブジェクトのリストを含むカスタムオブジェクト「レポートテーブル」にマッピングしています。私がこのようにそれを構築している理由は、各列にいくつの要素があるか、行の数もわからないからです。
Visualforceページは次のようになります:
<table><apex:repeat value="{!reportTables}" var="table">
<apex:repeat value="{!table.rows}" var="row">
<tr>
<apex:repeat value="{!row.ColumnValue}" var="column">
<apex:repeat value="{!column}" var="value">
<td>
<apex:outputText value="{!value}" />
</td>
</apex:repeat>
</apex:repeat>
</tr>
</apex:repeat>
質問は次のとおりです。
1)これは問題に対する良いアプローチのように思えますか?
2)VFにマッピングする独自のカスタムオブジェクトを書く以外に、XMLを消費するよりシンプル/より良い方法はありますか?
すべての提案に開かれています。私は自分でHTMLテーブルを構築するよりも良い方法があることを本当に願っています。その後、私はスタイリングやアラインメントなどにも対処しなければならないからです。
解決
XMLをコントローラーに直接返すため、各XMLノードにプロパティ(未定義の行長の追加コレクションも)を使用して、ラッパークラスを定義および使用します。多くの場合、複数のオブジェクト全体から表面データを表示するために必要なことです。ラッパーオブジェクトのコレクションを使用すると、それらを繰り返し、ドット表記を使用してクラス内のフィールドにアクセスできます。
所属していません StackOverflow