1

まず、この質問には少し紹介が必要ですので、ご容赦ください。

大まかに言うと、外部のWebサービスに接続しているため、XMLがapexコントローラーに返されます。アイデアは、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によって開発された)を使用して、このデータを「行」カスタムオブジェクトのリストを含むカスタムオブジェクト「reportTable」にマップしています。このように構築している理由は、各行に含まれる要素の数や行の数がわからないためです。

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テーブルを自分で作成するよりも良い方法があることを本当に望んでいます。そうすれば、スタイルや配置なども処理する必要があります。ありがとうございます。

4

1 に答える 1

1

XMLをコントローラーに直接返すため、ラッパークラスを定義して使用し、必要な各XMLノードのプロパティ(未定義の行の長さの追加のコレクションも含む)を使用します。多くの場合、複数のオブジェクトにわたる表形式のデータを表示するために実行する必要があります。ラッパーオブジェクトのコレクションを使用すると、それらを繰り返し処理し、ドット表記を使用してクラスのフィールドにアクセスできます。

于 2010-11-06T17:58:59.337 に答える