Salesforce потребляет XML и отображение данных в отчете VisualForce

StackOverflow https://stackoverflow.com/questions/4106944

Вопрос

Во-первых, этот вопрос требует немного введения, поэтому, пожалуйста, нести со мной.

Высокий уровень состоит в том, что я подключаю к внешней веб-сервису, который вернет некоторую XML на мой контроллер APEX. Идея состоит в том, что я хочу отобразить XML, возвращенный в хороший табличный формат на странице VisualForce. Формат 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 (разработанный SF для функций XML), чтобы сопоставить эти данные в пользовательский объект «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) Есть ли проще / лучший способ потреблять XML, помимо написания собственных пользовательских объектов для карты VF?

Открыт для любого и всех предложений. Я действительно надеюсь, что есть лучший путь, чем наращивание HTML-стола самостоятельно, так как тогда мне также приходится иметь дело с стилем и выравниванием и т. Д. Спасибо.

Это было полезно?

Решение

Поскольку вы возвращаете XML непосредственно к вашему контроллеру, определите и используете класс обертки со свойствами (даже дополнительные коллекции для не определенных длин строки) для каждого необходимого узла XML. Часто то, что нужно сделать для отображения табличных данных из нескольких объектов. Коллекция ваших объектов обертки позволит вам повторить их и использовать точечную обозначение для доступа к полям в классе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top