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

bop*_*opp 3 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>
Run Code Online (Sandbox Code Playgroud)

在第一行:

{!if($User.Alias !='Item1',
Run Code Online (Sandbox Code Playgroud)

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

{!if($User.Alias !='Item1', OR 'Item2', OR 'Item3',
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助和耐心!

eye*_*eam 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
)
Run Code Online (Sandbox Code Playgroud)

您还可以使用"Excel语法",其中您OR()可以使用任何数量的参数.

IF(OR($User.Alias = 'JohnDoe', $User.Alias = 'JBloggs', $User.Alias = 'FooBar'),
    value_if_true,
    value_if_false
)
Run Code Online (Sandbox Code Playgroud)
  1. 尽量不要在业务逻辑中使用用户别名.用户可以更改自己的别名,使您的支票无效.看看你是否可以根据检查$Profile,$UserRole或者在用户记录上创建一些复选框字段,使其仅对SysAdmins可编辑...

  2. 在这个特定的场景中 - 有一种方法可以在运行时检查用户是否有权删除帐户.当用户配置文件拒绝访问子对象时,请检查在Visualforce页面中使用apex:relatedList(您需要"isDeletable"版本).


编辑(重新:关于!和的评论!=)

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

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

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

  • ===为"平等"
  • !=<>"不等于"(后者也在Excel中工作)

因此,如果你写IF($User.Alias = 'JohnDoe', 'Allow', 'Deny')你意味着只有他会看到"允许".

还有一件事可能会让你感到困惑 - 否定操作员:!站在任何表达式前都会转换为真↔假.这也可以通过包装所需的表达式来实现NOT(some true/false expression here).

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