我正在尝试使用Atlassian产品中嵌入的Velocity引擎(并通过com.atlassian.templaterenderer公开)将JSON值替换为模板.
在模板中,这看起来有点像以下内容:
<script>
foo = $foo
</script>
Run Code Online (Sandbox Code Playgroud)
但是,当我使用映射到字符串的"foo"呈现模板时["bar", "baz"],输出如下:
<script>
foo = ["bar", "baz"]
</script>
Run Code Online (Sandbox Code Playgroud)
如何避免这种情况?
我正在为Liferay网站创建一组自定义模板和结构.
一个结构提供可重复的部分,其匹配模板然后迭代.
但是,出于样式的原因,我需要知道可重复部分的实际存在的实例数,并且在循环之前我需要知道.
所以,模板代码是这样的:
#foreach($thisChunk in $chunk.getSiblings())
[emit some HTML]
#end
Run Code Online (Sandbox Code Playgroud)
我想在foreach 之前做一些条件逻辑,并在包含元素上发出不同的CSS类名,具体取决于有多少$ chunk.
任何想法如何访问兄弟姐妹的数量而不首先循环它们?
我正在尝试将一些字符串值添加到 Velocity 中的列表中。当我运行代码时,它工作正常。但是它添加值的行打印为真。在 Velocity 中总是这样吗?我是 Velocity 模板的新手,所以无法自己弄清楚。
#set ($uniqueInterfaces = [])
#if($ipv4interfaceName == $ipv6interfaceName)
$uniqueInterfaces.add($ipv4interfaceName)
#end
Run Code Online (Sandbox Code Playgroud)
它是带有嵌套 foreach 的较大代码的一部分。它有两个匹配项,所以输出是:
true
true
Run Code Online (Sandbox Code Playgroud)
我根本不需要打印这个真实的!
我需要在API网关方法的正文映射模板中包含请求时间.有日期/时间变量或功能吗?我在模板参考中找不到任何内容.
示例正文映射模板:
Action=SendMessage&MessageBody=$util.urlEncode("{""timestamp"":""TIMESTAMP_HERE"",""body-json"":$input.json('$'),""params"":""$input.params()""}")
Run Code Online (Sandbox Code Playgroud) 我正在为 AWS API 网关创建请求映射模板。在该模板中,我想根据某些条件自定义请求参数并应用运算符。
#foreach($header in $input.params().header.keySet())
#if($header=="id")#set($idVal =
$util.escapeJavaScript($input.params().header.get($header)))
#if($idVal.matches("^[0-9a-f]{4}-[0-9A-Z]{3}$"))
"$header":"$idVal"
#else
#set($random = UUID.randomUUID())
"$header":"$random"
#end
#else
Run Code Online (Sandbox Code Playgroud)
例如,在上面基于 if 条件的模板中,我想生成 randomUUID 并添加到标题中。但是当我测试时,id 值设置为空字符串。
如何在速度模板映射 api 网关中使用包和 java 函数支持?另外,请分享对格式良好的模板的任何参考,了解更多信息会非常有用。
templates vtl amazon-web-services aws-lambda aws-api-gateway
我最近在一些 Velocity 代码中遇到了这两个变量:
$!variable1
!$variable2
Run Code Online (Sandbox Code Playgroud)
我对它们的相似性感到惊讶,所以我对代码的正确性产生了怀疑,并对找出两者之间的差异感兴趣。
速度是否可能允许这两个符号的任何顺序或它们有不同的目的?你知道答案吗?
如何访问VM模板中URI中传递的GET变量?
这仅在加载小部件URL时有效:
$request.get("parameters").get("fav").get(0)
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个可以使用友好URL的简洁解决方案.
这是我的测试模板:
<br><br><br>
#set($url = $request.attributes.CURRENT_URL)
<h2>url: $url</h2>
#set($favs = $url.split("fav="))
favs: $favs<br>
favs.size(): $favs.size() <br>
#if($favs.size() > 1)
#set($fav1 = $favs.get(1).split("&").get(0))
fav1: $fav1<br>
#else
No fav!
#end
#if($favs.size() > 2)
#set($fav2 = $favs.get(2).split("&").get(0))
fav2: $fav2<br>
#end
#set($favs2 = $httpUtil.getParameterMap($url, "fav"))
favs2: $favs2
<hr>
<h3>Fav?</h3>
<form method="get">
<input type="checkbox" name="fav" value="dave"/> Dave<br>
<input type="checkbox" name="fav" value="nate"/> Nate<br>
<input type="checkbox" name="fav" value="taylor"/> Taylor<br>
<input type="submit" value="Send"/>
</form>
<hr>
<div style="font-size: 9px;">request: $request</div>
Run Code Online (Sandbox Code Playgroud)