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

Syntax VisualForce IF语句-需要知道“的语法”;或;,syntax,salesforce,visualforce,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:pag

我需要使用“或”逻辑的正确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>
我需要使用“或”逻辑指定多个项,以便在任何指定的“项”为true时对IF语句求值。我打算这样做,但我不知道正确的语法是什么:

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

谢谢你的帮助和耐心

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

这就是我所说的“程序员语法”,因为它使用管道(
|
)和符号(
&&
);操作符对于开发人员来说更容易阅读

IF($User.Alias = 'JohnDoe' || $User.Alias = 'JBloggs' || $User.Alias = 'FooBar',
    value_if_true,
    value_if_false
)
您还可以使用“Excel语法”,其中有
或()
函数,可以接受任意数量的参数

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

  • 尽量不要在业务逻辑中使用用户别名。用户可以更改自己的别名,使您的支票无效。查看是否可以基于
    $Profile
    $UserRole
    或在用户记录上创建一些复选框字段,使其仅可供系统管理员编辑

  • 在这个特定场景中,有一种方法可以在运行时检查用户是否有权删除帐户。检查(您需要“isDeletable”版本)


  • 编辑(关于
    !=
    的评论)

    我使用的第一个链接中提到了它;)

    =有时程序员用
    来写“不等于”。它看起来很像“斜线等号”(≠) 但不需要记住该字符的一些奇怪的代码。这种约定在许多编程语言中都非常统一

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

    • =
      =
      表示“相等”
    • !=
      表示“不等于”(后者也适用于Excel)
    所以如果你写
    if($User.Alias='JohnDoe','Allow','Deny')
    你的意思是只有他会看到“Allow”

    还有一件事可能会让你困惑——否定运算符:
    站在任何表达式前面都会转换为true↔ false。这也可以通过在
    NOT(此处的一些真/假表达式)
    中包装所需的表达式来实现


    (表示合并字段开始的感叹号并不表示为否定。因此,
    {!some expression}
    仅表示该表达式的逻辑(或数字或文本)值。若要对其进行否定,请执行
    {!!expression}
    {!not(expression)}

    非常感谢!这正是我所需要的。实际上我还有一个后续问题,非常感谢您的时间!$User.Alias!='Item1'和$User.Alias='Item1'之间有什么区别?在我看来,!的意思是“除了这个家伙以外的任何人”,而不是使用!的意思是“这些家伙”“。换句话说:原始代码被截断,用于指定我希望能够删除的别名,它使用了!。我使用了您的版本,但没有!我现在指定了我不希望能够删除的用户。我是正确的,还是偏离了轨道?(我也按照您的建议使用$UserRole。)酷:)感谢您的接受,并祝您在visualforce世界取得成功;)如果您对SF(与管理相关,不一定是编程;我们可以争论公式语法是管理内容的一部分)有更多的一般性问题,请尝试一下salesforce.stackexchange.com。
    IF(OR($User.Alias = 'JohnDoe', $User.Alias = 'JBloggs', $User.Alias = 'FooBar'),
        value_if_true,
        value_if_false
    )