如何在visualforce中执行复杂的IF语句?

时间:2012-04-27 10:09:40

标签: salesforce visualforce

我对此完全陌生,这项任务对我来说非常重要,我之前从未做过这样的事情。我得到了一个大致含有这个的模板:

        <apex:column headervalue="Amount"><c2g:CODAFormatterController number="{!IF([some condition],[something],[something else])}"/></apex:column>

我用条件/某事/其他东西替换了语句

有没有办法像在javascript中那样使用函数,所以像

数= “getNumber(X);”

还是我必须以某种方式将一些IF语句链接在一起?有IF ... ELSE?

我不知道CODAFormatterController是什么,因为它在google上返回0结果。

任何建议都会有所帮助,我担心我会被深深地抛在这里!

2 个答案:

答案 0 :(得分:2)

VForce内联功能正常,它们必须最终返回一个值,即一个服务器端代码的简单值或调用点。它们不支持命令式编码,它们在服务器端被解析(早在JS发挥作用之前)。在这方面,IF(condition,valuetrue,valuefalse)相当于IF..THEN..ELSE..ENDIF

如果没有类型不匹配,您可以自由地链接任意数量的函数,这意味着您的valuetrue本身可以是一个函数,包括作为IF函数本身。

通常当人们遇到这类问题时,总会采用稍微不同的方法来解决问题。这一切都取决于你在这里想做什么......

答案 1 :(得分:2)

我在visualforce页面上自己做一些工作时偶然发现了这个问题。无论如何,如果有其他人看到这个问题,他们应该知道没有必要使用复杂的嵌套IF语句,现在Salesforce中有一个CASE函数。

文档 - https://developer.salesforce.com/docs/atlas.en-us.198.0.pages.meta/pages/pages_variables_functions.htm

{!CASE(Opportunity.StageName,
            "Prospecting", "1",
            "Needs Analysis", "2",
            "Proposal/Price Quote", "3",
            "default val")} <!-- the last one returns if none of the previous results matched -->