java 如何正确检查freemarker中的布尔值

shstlldc  于 2023-01-29  发布在  Java
关注(0)|答案(2)|浏览(191)

所以,我试着提出一个简单的条件:

<#if documentData.isOtherInsurance>
<p>&#10004 Да</p>
<#else> <p>&#10008;Нет </p></#if>

我得到的错误是:

For "#if" condition: Expected a boolean, but this has evaluated to a method+sequence (wrapper: f.e.b.SimpleMethodModel):
==> documentData.isOtherInsurance!false  [in template "InsuranceNotification" at line 1, column 1445]

----
Tip: Maybe using obj.something instead of obj.isSomething will yield the desired value.
----

----
FTL stack trace ("~" means nesting-related):
    - Failed at: #if documentData.isOtherInsurance!false  [in template "InsuranceNotification" at line 1, column 1440]
----

所以我几乎什么都试过了
(一)
一个二个一个一个

hyrbngr7

hyrbngr71#

试试这个:

<#if documentData.isOtherInsurance> 
    <@displayRow label="isOtherInsurance" value="&#10004 Да" />
<#else>
    <@displayRow label="isOtherInsurance" value="&#10008;Нет" />
</#if>
bvjveswy

bvjveswy2#

isOtherInsurance是一个方法,正如错误消息所指出的,而不是boolean。请尝试documentData.otherInsurance(没有“is”),这是boolean isOtherInsurance() Java方法自动定义的Java Bean属性。
注意,有时开发人员错误地将这样的方法声明为Boolean isOtherInsurance()(大写的Boolean)。然后他们应该将其更改为Boolean getOtherInsurance()boolean isOtherInsurance()。但如果他们不这样做,您仍然可以使用documentData.isOtherInsurance()(注意()将调用该方法,因此随后将使用该方法的返回值,而不是方法本身)。

相关问题