VisualForce IF语句 - 需要知道“或”的语法

时间:2013-12-19 00:18:47

标签: syntax salesforce visualforce

我需要帮助使用正确的VisualForce语法来使用“或”逻辑。我正在使用的代码是:

<apex:page action="{!if($User.Alias !='Item1',
    null,
    urlFor($Action.Account.Delete, $CurrentPage.Parameters.id, [retURL='/001'], true)
    )
    }"
  standardController="Account">
     <apex:pageBlock >
        <apex:PageMessage summary="You are not allowed to delete Accounts"
            severity="Warning"
            strength="3"/>
        <apex:pageMessages />
    </apex:pageBlock>
    </apex:page>

在第一行:

{!if($User.Alias !='Item1',

我需要使用“或”逻辑指定多个项目,以便在任何指定的“Items”为真时评估IF语句。我想要这样的东西,但我不知道正确的语法是什么:

{!if($User.Alias !='Item1', OR 'Item2', OR 'Item3',

感谢您的帮助和耐心!

1 个答案:

答案 0 :(得分:6)

您可以使用逻辑运算符或使用公式函数来执行此操作。

https://help.salesforce.com/HTViewHelpDoc?id=customize_functions.htm

这就是我称之为“程序员的语法”,因为它使用管道(||)和&符号(&&);操作员更容易阅读。

IF($User.Alias = 'JohnDoe' || $User.Alias = 'JBloggs' || $User.Alias = 'FooBar',
    value_if_true,
    value_if_false
)

您还可以使用“Excel语法”,其中OR()函数可以使用任意数量的参数。

IF(OR($User.Alias = 'JohnDoe', $User.Alias = 'JBloggs', $User.Alias = 'FooBar'),
    value_if_true,
    value_if_false
)

  1. 尽量不要在业务逻辑中使用用户别名。用户可以更改自己的别名,使您的支票无效。看看您是否可以根据$Profile$UserRole或可能在用户记录上创建一些复选框字段,使其仅对SysAdmins可编辑...

  2. 在此特定方案中 - 有一种方法可以在运行时检查用户是否有权删除帐户。检查Using apex:relatedList in a Visualforce page when the user profile denies access to child objects(您需要“isDeletable”版本)。


  3. 修改(重新:关于!!=的评论)

    我在你用过的第一个链接中提到过;)

    !=,有时<>是程序员用来写“不等于”的东西。它看起来类似于“削减等号”(≠),但不需要记住该字符的一些奇怪的代码。这种约定在许多编程语言中非常统一。

    就您而言 - 公式和Visualforce表达式的语法可以互换使用:

    • ===代表“等于”
    • !=<>代表“不等于”(后者也适用于Excel)

    所以如果你写IF($User.Alias = 'JohnDoe', 'Allow', 'Deny'),你的意思是只有他会看到“允许”。

    还有一件事可能会让你感到困惑 - 否定操作符:站在任何表达式前面的!将转换为真↔false。这也可以通过在NOT(some true/false expression here)

    中包装所需的表达式来实现

    (感叹号表示合并字段开始并不意味着否定。因此{!some expression}仅表示该表达式的逻辑(或数字或文本)值。要否定它,您要么{{1 }或{!!expression}