标签: vtl

有没有办法使用intellij代码/文件模板生成多个文件/类?

我喜欢intellij的代码/文件模板,它们对我来说非常适合单个文件,但能够一次创建多个文件/类会很棒.

我确实找到了这个问题,但自从我希望事情可能发生变化已有几年了.

我们在应用程序中使用mvp模式,因此每次我们想要创建一个新视图时,它都需要两个类和两个接口,它们总是处于相同的模式中.如果我们可以为此生成所有基础结构并链接类,那将是非常棒的.

任何建议或新信息将不胜感激?也许是时候用JetBrains记录功能请求了?

code-generation vtl intellij-idea

53
推荐指数
2
解决办法
3448
查看次数

在Velocity Template Language中创建并迭代数组

如何在VTL中创建数组并将内容添加到数组?如何通过索引检索数组的内容?

vtl

33
推荐指数
3
解决办法
5万
查看次数

用Velocity模板语言替换字符串的子串

我想用另一个字符串替换Velocity Template Language中的一部分字符串.

例如:

#set($a = "Hello")
#set($b = "+")
Run Code Online (Sandbox Code Playgroud)

我想用Hello替换ll中的ll.输出应该是He ++ o

请帮我

谢谢基肖尔

string velocity replace vtl

32
推荐指数
1
解决办法
4万
查看次数

有没有办法在传统的代码调试意义上调试Velocity模板?

我们在Web应用程序中大量使用Velocity.虽然很容易调试Java方面并确保正确填充Velocity Context,但是能够在合并步骤中逐步解析VTL,设置断点等是非常有价值的.是否有任何工具或者IDE/IDE插件可以通过VTL(Velocity Template Language)实现这种功能吗?

debugging templates velocity vtl

11
推荐指数
2
解决办法
9228
查看次数

以速度输出字符串的一部分

道歉,如果我胡扯或谈论一些乱七八糟但我是速度新手,这些论坛!

我需要检查某个字符串的内容,如果出现,则输出文本的第二部分.例如:

set ($string = "This is a long string *** but I only want to output this on my email").
Run Code Online (Sandbox Code Playgroud)

我想输出3个星号后的所有文字.我已经在论坛上搜索过,但是找不到任何可以完全帮助我的东西.

velocity vtl

10
推荐指数
1
解决办法
2万
查看次数

如何从Velocity模板访问对象的公共字段

这是我的对象类:

public class Address
{
    public final String line1;
    public final String town;
    public final String postcode;

    public Address(final String line1, final String town, final String postcode)
    {
        this.line1 = line1;
        this.town = town;
        this.postcode = postcode;
    }
}
Run Code Online (Sandbox Code Playgroud)

我将它添加到速度上下文中,如下所示:

Address theAddress = new Address("123 Fake St", "Springfield", "SP123");
context.put("TheAddress", theAddress);
Run Code Online (Sandbox Code Playgroud)

但是,在编写模板时,以下内容不会呈现地址字段(但是,当我将getter添加到Address类时,它可以正常工作)

<Address>
    <Line1>${TheAddress.line1}</Line1>
    <Town>${TheAddress.town}</Town>
    <Postcode>${TheAddress.postcode}</Postcode>
</Address>
Run Code Online (Sandbox Code Playgroud)

是否可以在不添加getter的情况下访问Velocity上的对象的公共字段?

java velocity field public vtl

9
推荐指数
1
解决办法
9217
查看次数

将键/值对添加到VTL中的对象(对于API网关)

我正在为AWS API Gateway集成响应编写映射模板.我想将一个键/值对添加到我的Lambda函数返回的JSON对象.

我的函数返回一些像这样的JSON:

{
  "id": "1234",
  "name": "Foo Barstein"
}
Run Code Online (Sandbox Code Playgroud)

我想模板输出这样的东西:

{
  "id": "1234",
  "name": "Foo Barstein",
  "href": "https://example.tld/thingy/1234"
}
Run Code Online (Sandbox Code Playgroud)

我的映射模板如下所示:

#set($thingy = $input.json('$'))
#set($thingy.href = "https://example.tld/thingy/$thingy.id")

$thingy
Run Code Online (Sandbox Code Playgroud)

但是,我的模板输出未修改$thingy,没有href我试图添加.

我已阅读VTL用户指南,但无济于事.

vtl aws-api-gateway

9
推荐指数
2
解决办法
569
查看次数

如何使用 Velocity 模板语言检查数组中是否存在值

我不确定如何使用 Velocity 模板语言实现以下目标。

本质上,我想检查给定列表/数组中是否存在给定值。在 C# 中,它相当于.Any()or.Contains()方法。

#set($myValues = ["apple", "banana", "strawberry"])
#foreach($i in $items)
    $myValues.any($i) <= better way to achieve this??
    or something like this
    $myValues.contains($i)
#end
Run Code Online (Sandbox Code Playgroud)

当然,我可以使用多个if...else...条件并循环遍历列表来检查某个值是否存在,但代码很快就会变得混乱(如果查找列表很大)。有没有更好的方法来做到这一点?

java loops velocity vtl apache-velocity

9
推荐指数
1
解决办法
1万
查看次数

如何直接从请求映射器返回?

考虑以下 GraphQL 模板:

type Foo {
  id: ID!
  bars: Bars
}

type Bar {
  id: ID!
  name: String!
}

type Bars {
  items: [Bar]!
  nextToken: String
}
Run Code Online (Sandbox Code Playgroud)

barsFoo 类型字段的映射模板如下所示:

#set($ids = [])
#foreach($id in $context.source.bars)
    #set($map = {})
    $util.qr($map.put("id", $util.dynamodb.toString($id)))
    $util.qr($ids.add($map))
#end
{
    "version" : "2018-05-29",
    "operation" : "BatchGetItem",
    "tables" : {
        "barsTable" : {
             "keys": $util.toJson($ids),
             "consistentRead": true
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

这很好用。但是如果bars字段包含和空数组[],模板显然会崩溃并出现以下错误:

"errors": [
    {
      "path": [
        "getFoo",
        "bars"
      ],
      "data": null,
      "errorType": "MappingTemplate", …
Run Code Online (Sandbox Code Playgroud)

vtl amazon-web-services graphql aws-appsync

8
推荐指数
1
解决办法
1109
查看次数

如何为速度模板编写单元测试?

这甚至可能吗?

你好朋友。我正在使用 AWS AppSync + DynamoDB 构建应用程序,并且我开始拥有大量解析器映射模板,所有这些模板都是使用 Apache Velocity 模板语言 (VTL) 编写的。

我开始担心的是,这些 vtl 文件对应用程序非常重要(因为它们定义了如何检索数据)并且其中一个错误可能会造成严重破坏。所以就像系统的任何关键部分一样......我想为他们编写一些自动化的单元测试。但我还没有发现其他人这样做。

  1. 如果您使用 VTL(通过 AppSync 或 API Gateway),您如何测试它们?
  2. 甚至可以为速度模板编写自动化测试吗?
  3. 还是我走上了完全错误的道路,我应该只使用 Lambdas 作为我的解析器?

提前致谢!

unit-testing vtl amazon-dynamodb aws-appsync velocity-template-language

8
推荐指数
2
解决办法
2378
查看次数