【问题标题】:String comparison in freemarker not workingfreemarker中的字符串比较不起作用
【发布时间】:2014-06-17 02:03:40
【问题描述】:
<#if ${primaryName!}?has_content> && ${key?js_string!}=="Joe">
//do something

<#elseif ${primaryClass!}?has_content> && ${key?js_string!}=="Apple">
//do something

<#else>
//do something

</#if>

上面的内容给了我一个错误,即最后会发生一些事情。 { ] && .以上有什么问题?

Encountered "{" at line 26, column 39 in abc.ftl. Was expecting one of: ">" ... "." ... "[" ... "(" ... "?" ... "!" ... <TERMINATING_EXCLAM> ... "??" ... "+" ... "-" ... "*" ... "/" ... "%" ... "!=" ... "=" ... "==" ... ">=" ... <ESCAPED_GTE> ... ">" ... <ESCAPED_GT> ... <LESS_THAN_EQUALS> ... <LESS_THAN> ... ".." ... <AND> ... <OR> ...

【问题讨论】:

  • 你能分享确切的错误信息吗?
  • 在 abc.ftl 的第 26 行第 39 列遇到“{”。期待以下之一:“>”...“。” ... "[" ... "(" ... "?" ... "!" ... ... "??" ... "+" ... "-" 。 .. "*" ... "/" ... "%" ... "!=" ... "=" ... "==" ... ">=" ... ... ">" ... ... ... ...“..” ... ... ...
  • 分享了错误信息 Matthew Wilson

标签: java freemarker


【解决方案1】:

是的,绝对会给你这样的东西

Encountered "{" ...
Was expecting one of:
    ">" ...
    "." ...
    "[" ...
    "(" ...
    "?" ...
    "!" ...

因为 if else 语法不正确,所以有几处是错误的。

下一行中突出显示的是错误的内容。

${primaryName!}?has_content&gt; && ${key?js_string!}=="Joe">

您将数据放在数据模型中,但在 if/else foreach 的模板中,列出您可以直接访问它,而不是使用 ${}

这里是正确的,平等使用==,不平等使用!=

<#if primaryName?has_content && key?is_string && key=="Joe">
 // do somthing
<#elseif primaryClass?has_content && key?is_string && key=="Apple">
// elseif do something
<#else>
// else do something
</#if>

has_content 返回真。见doc

Note that when your data-model implements multiple template model interfaces you may get unexpected results. However, when in doubt you can use always use expr!?size > 0 or expr!?length > 0 instead of expr?has_content.

There is no js_string method , but its is is_string return true, if value is string 

查看is_string的文档

另见matchesBuilt-ins for strings

【讨论】:

  • @user35736644892 有一个 "js_string" 方法可以转义 JavaScript 字符,它与 "is_string" 无关。我刚刚提到了这一点,以防 OP 想要在转义 javascript 字符后比较字符串值。
猜你喜欢
  • 2011-09-20
  • 2016-12-16
  • 2012-12-06
  • 2014-04-03
  • 2012-01-22
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多