我试图用一系列数字写一个#if
语句。基本上,如果某个字段与任何一个数字子集匹配(如下面的||
或运算符所示),则将其指定为" bayarea",elseif
不同的子集,然后是不同的如果没有一堆嵌套的"或者#34;这是可能的。语句?
我收到语法错误,说它正在等待布尔值是/否语句。
<#if TEST_CONTACTS_LIST.PREFERRED_STORE ==
{12||21||22||38||46||67||71||74||76||77||83||86||104||113||119||143>
{bayarea}
<#elseif TEST_CONTACTS_LIST.PREFERRED_STORE ==
{34||62||84||91||137||144||152||169}>
{blueridge}
<#elseif TEST_CONTACTS_LIST.PREFERRED_STORE ==
{18||44||49||50||61||68||121||182}>
{frontrange}
<#else>
</#if>
答案 0 :(得分:1)
您不需要嵌套:
<#if TEST_CONTACTS_LIST.PREFERRED_STORE == 12
|| TEST_CONTACTS_LIST.PREFERRED_STORE == 21 || ...>
虽然这确实太冗长了,但你可以这样做:
<#assign store = TEST_CONTACTS_LIST.PREFERRED_STORE>
<#if store == 12 || store == 21 || ...>
但我认为你要找的是这个(如果你有几个#assign
- s,那么这个与#elseif
相结合):
<#if [12, 21, ...]?seq_contains(TEST_CONTACTS_LIST.PREFERRED_STORE)>
这也是一种可能性(只是不要忘记#break
- s):
<#switch TEST_CONTACTS_LIST.PREFERRED_STORE>
<#case 12><#case 21>...
{bayarea}
<#break>
<#case 34><#case 62>...
{bluebridge}
<#break>
...
</#switch>
答案 1 :(得分:0)
以上是四个好的答案。为了扩展它,我会做这样的事情:
<#assign pref_store = TEST_CONTACTS_LIST.PREFERRED_STORE>
<#assign area = "">
<#assign group1 = [12,21,22,38,46,67,71,74,76,77,83,86,104,113,119,143]>
<#assign group2 = [34,62,84,91,137,144,152,169]>
<#assign group3 = [18,44,49,50,61,68,121,182]>
<#if group1?seq_contains(pref_store)>
<#assign area = "bayarea">
<#elseif group2?seq_contains(pref_store)>
<#assign area = "blueridge">
<#elseif group3?seq_contains(pref_store)>
<#assign area = "frontrange">
<#else>
<#assign area = "whatever">
</#if>
您的首选存储区为${area}
。
或者,您也可以将这些值设置为字符串,而不是“序列/数组”。
例如:
<#assign pref_store = "${TEST_CONTACTS_LIST.PREFERRED_STORE}">
<#assign group1 = "12,21,22,38,46,67,71,74,76,77,83,86,104,113,119,143">
那么if语句将如下:
<#if group1?contains(pref_store)>
(请注意,用?contains
代替?seq_contains
)
等等。