Используя jopendocument с coldfusion/railo, как добавить строку таблицы?

Я использую jopendocument 1.2 с Railo 3.3.1.000

с http://www.jopendocument.org/start_text_2.html

List<Map<String, String>> months = new ArrayList<Map<String, String>>();
months.add(createMap("January", "-12", "3"));
months.add(createMap("February", "-8", "5"));
months.add(createMap("March", "-5", "12"));
months.add(createMap("April", "-1", "15"));
months.add(createMap("May", "3", "21"));
template.setField("months", months);

Как написать этот код в cfml, или у кого-нибудь есть опыт работы с jopendocument, чтобы добавить строку в файл шаблона odt с cfml?

1 ответ

Решение

List<Map<String, String>> months = new ArrayList<Map<String, String>>();

С точки зрения CF, этот код создает массив структур. Поскольку java строго типизирован, в коде используются обобщенные элементы, чтобы указать, какой тип объектов содержится в каждом из них.

    List< Map<...> >          // Array containing structures 
    Map< String, String >     // Structure containing "String" values

К счастью, массивы CF java.util.List объекты внутри и структуры java.util.Map объекты. Таким образом, вам нужно всего лишь создать массив структур CF с правильными ключами и значениями. Затем передайте массив в template.setField(...),

Я не был уверен, какие ключи использовать в структуре, поэтому я скачал шаблон "test.odt" из http://jopendocument.org/download/jOpenDocument-template-1.2.zip. Выяснилось, что каждая структура должна содержать три (3) ключа, по одному для каждого столбца в таблице: name, min, max, Пока вы заполняете структуры строками, это должно работать:

// Create an array of structures. Each structure represents a table row. 
// The key names for columns 1-3 are: "name", "min", "max"
months = [
            {name="January", min="-12", max="3"}
            , {name="February", min="-8", max="5"}
            , {name="March", min="-5", max="12"}
            , {name="April", min="-1", max="15"}
            , {name="May", min="3", max="21"}
            , {name="June", min="5", max="32"}
        ];  

// populate table rows
template.setField("months", months);
Другие вопросы по тегам