Apex 重复内 IF 语句的 Visualforce 语法错误

Visualforce Syntax Error for IF statement inside a Apex Repeat

我收到一个语法错误并且很难确定哪里出错了。

我研究了几种不同的替代方法,例如包装 <apex outputText> 以及使用多个版本的 {! 导致我的变量调用。不幸的是,我很难理解是哪一系列错误导致了这个语法错误。

代码的关键是:

<td>
{! IF(isTenant, ${woli.Repair_Product__r.Bill_Rate_Retail__c}, ${woli.Repair_Product__r.Bill_Rate__c})}
</td>

用于变量引用。这位于 woli 定义为:

<apex:repeat value="{!woliList}" var="woli">

出于测试目的,isTenant 在我的控制器中被硬编码为 false:

public Boolean isTenant = False;

我希望我的 Apex Repeat 命令根据 isTenant 的值填充不同的账单费率,但当然由于语法错误我无法判断我是否在正确的轨道上。有关 Visual Force 参考中何时需要或不需要多个 {!} 的有用提示会很有帮助。我也很好奇什么时候应该使用单引号或双引号来定义 if 条件的输出。

更新:

我想也许我没有将条件语句绑定到控制器中的变量那么简单class所以我修改为:

  <td>
    {! IF({!isTenant}, ${woli.Repair_Product__r.Bill_Rate_Retail__c}, ${woli.Repair_Product__r.Bill_Rate__c})}
    </td>

在控制器中添加适当的 get/set。但遗憾的是,这不是开发人员控制台仍然给出神秘语法错误的问题。

您不需要 $ 标志。美元用于 "depends who's looking" 和其他与数据库中的数据无关的特殊字段。你可以有 $CurrentPage$User.Name$Profile.Name$Label.someText(那个算作 "depends who's looking",因为如果你的首选语言是法语,它可以显示翻译版本。

第二件事 - 如果您已经在 {! some merge field syntax } 中,则不需要更多花括号。

尝试

{! IF(!isTenant,
    woli.Repair_Product__r.Bill_Rate_Retail__c,
    woli.Repair_Product__r.Bill_Rate__c
)}