Apache Velocity access Строковый массив, созданный в коде Java? - PullRequest
2 голосов
/ 05 октября 2011

Я пытаюсь получить доступ к массиву String, который я создал в своем классе Java.Массив строк хранится на карте с именем notSelected с использованием того же ключа.

У меня также есть один объект String с именем testString, хранящийся на той же карте, к которому я могу легко получить доступ и отобразить, используя:

$testString

Однако как мне получить доступ к объекту массива String (notSelected) с карты внутри объекта шаблона скорости?

Я пытался:

$notSelected.get(0)
$notSelected[0]
$notSelected.[0]
${notSelected}.get(0)

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

Любая помощь приветствуется.Спасибо

Вот код Java:

public Map<String, Object> getVelocityParameters
        (final Issue issue, final CustomField field, final FieldLayoutItem fieldLayoutItem) {
    final Map<String, Object> map = super.getVelocityParameters(issue, field, fieldLayoutItem);
    String[] notSelected = {"foo", "bar", "baz"};
    map.put("notSelected", notSelected);

    String[] selected = {"foo", "bar", "baz"};
    map.put("selected", selected);

    //this code works and i can access $testString in the velocity template
    String testString = "Test Worked";
    map.put("testString", testString);

    return map;
}

1 Ответ

2 голосов
/ 05 октября 2011

JIRA использует более старую версию Velocity, которая не поддерживает нотацию индекса массива для доступа к массивам.Вместо этого, используйте обозначения List и .get(n):

List foo = new ArrayList() {{ add("hi"); add("there"); }};

$foo.get(0)
$foo.get(1)

И помните, небольшие кусочки информации, такие как среда, в которой вы работаете, могут иметь огромное значение (и когда кто-то задает вопрос,может быть причина спрашивать это;)

...