Question

Tout d'abord, cette question nécessite un peu d'introduction afin plaît garder avec moi.

Le haut niveau est que je me connecte à un service Web à l'extérieur qui renvoie du XML à mon contrôleur pointe. L'idée est que je veux afficher le code XML retourné dans un beau format tableau dans une page Visualforce. Le format ressemblera à quelque chose comme le dos à venir XML ceci:

<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>

...

Maintenant je suis actuellement en utilisant la classe utilitaire XMLDOM (développé par SF pour les fonctions XML) pour cartographier ces données dans un objet personnalisé « reportTable » qui contient une liste d'objets personnalisés « rangée ». La raison pour laquelle je construis ce de cette façon parce que je ne sais pas combien d'éléments dans chaque ligne, ni le nombre de lignes.

La page Visualforce ressemble à quelque chose comme ceci:

<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>

Les questions sont:

1) Est-ce que ce semble être une bonne approche du problème?

2) Est-il plus simple / meilleure façon de consommer le XML en plus d'écrire mes propres objets personnalisés à la carte VF à?

Ouvert à toute suggestion. J'espère vraiment qu'il ya une meilleure façon que la construction de la table HTML moi-même, je dois aussi traiter avec un style et un alignement, etc. Merci.

Était-ce utile?

La solution

Puisque vous renvoyer le XML directement à votre contrôleur, définir et utiliser une classe d'emballage, avec des propriétés (même collections supplémentaires pour des longueurs de lignes non définies) pour chaque noeud XML nécessaire. Il est souvent ce qui doit être fait pour afficher les données sous forme de tableau à travers plusieurs objets. Une collection de vos objets wrapper vous permettra de itérer sur eux, et l'utilisation notation avec point pour accéder aux champs de la classe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top