syntax - VisualForce IF 语句 - 需要了解 "or"的语法

标签 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',

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

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

感谢您的协助和耐心等待!

最佳答案

您可以使用逻辑运算符或公式函数来完成。

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 进行检查,或者在用户记录上创建一些复选框字段,使其仅对系统管理员可编辑...

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


编辑(回复:关于 !!= 的评论)

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

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

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

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

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

还有一件事可能会让您感到困惑 - 否定运算符:! 站在任何表达式前面都会转换为 true ↔ false。这也可以通过将您想要的表达式包装在 NOT(some true/false expression here) 中来实现。

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

关于syntax - VisualForce IF 语句 - 需要了解 "or"的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20671252/

相关文章:

javascript - Ruby on Rails 和 angularJS : Can someone explain the usage and syntax pls

bash - Bash 中的多重测试 [[ 表达式 ]]

haskell - 和有什么区别。 (点)和 $(美元符号)?

xml - 如何在 xpath 中定义默认的 salesforce 命名空间

salesforce - Soql查询以检索两个日期之间的机会

salesforce - 电子邮件类的 Apex 测试用例

javascript - 使用 JavaScript 替换 VisualForce 页面上的文本

c++ - 将 stdio.h 程序转换为 iostream

javascript - 获取NetSuite的授权url

salesforce - Visualforce 自定义 Controller 列表