【问题标题】:Apache Velocity access String array created in Java code?Apache Velocity 访问用 Java 代码创建的字符串数组?
【发布时间】:2011-10-05 03:11:33
【问题描述】:

我正在尝试访问我在 Java 类中创建的字符串数组。 字符串数组使用相同的键存储在名称为“notSelected”的 Map 中。

我还有一个名为“testString”的字符串对象存储在同一个地图中,我可以使用以下方法轻松访问和显示:

$testString

但是,我如何从速度模板对象内的 Map 访问字符串数组对象(notSelected)?

我试过了:

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

最后三个似乎返回了字符串数组对象的内存位置的引用值,但我仍然无法访问数组内的值。

非常感谢任何帮助。谢谢

这里是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;
}

【问题讨论】:

  • 你能添加将它们放入速度上下文的伪代码吗?我不确定你在说什么。
  • 然后将该地图放入上下文中,或者......它是如何暴露给模板的?
  • 是的,地图在上下文中。所以我可以打印和输出'testString'变量......但我也想访问字符串数组......所以例如我将如何访问notSelected [0],它可以在Java中工作,在模板中?谢谢戴夫
  • 如何将地图放入上下文中?在不知道如何设置和执行此操作的情况下,很难有效地提供帮助。当我将数组放入速度上下文时,使用普通的方括号表示法没有问题。
  • 其他人对此进行了编码,但考虑到我可以访问 String 和 int 和 double 等而不是数组,这真的很重要吗?

标签: java velocity


【解决方案1】:

JIRA 使用不支持数组索引表示法的旧版本 Velocity 来访问数组。相反,请使用 List.get(n) 表示法:

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

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

请记住,诸如您所在的环境之类的小信息可以产生巨大的影响(当有人提出问题时,可能会有提出问题的理由;)

【讨论】:

  • 酷。 (我想知道他们为什么使用旧版本?如果我记得,我会问。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 2019-05-03
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多