在 Visualforce if 语句中使用表达式 & HTML

Use a expression & HTML in Visualforce if statement

我有 HTML 和一个表达式,我想在字段作为值时显示。如果没有,则根本不显示它。

{! IF( ISBLANK(GoEvent.Event_Time_End__c), '', '<b>End Time:</b> {!GoEvent.Event_Time_End__c}' ) }

我认为我的条件设置正确,但是 HTML 没有呈现并且表达式的正确值没有显示。看起来像这样。

为了使您的代码按预期工作,您需要将输出包装在 apex:outputText 中并设置 escape="false"。请注意,如果您要注入用户可以编辑的值,则使用 escape=false 会产生安全隐患,请参阅:https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_security_tips_scontrols.htm

其次,您看到 # 的原因是您已经在带有 !IF 的 visualforce 语法中,因此不需要第二个 {!} 构造。

最后我更喜欢连接字符串和 visualforce 语法而不是混合。

所以一个工作版本应该是这样的:

<apex:outputText value="{! IF( ISBLANK(GoEvent.Event_Time_End__c), '', '<b>End Time:</b>' + GoEvent.Event_Time_End__c ) }" escape="false"/>

但是,鉴于您的代码实际上是在说如果不为空则只显示输出我认为您最好使用这样的东西:

<apex:outputPanel layout="false" rendered="{!!ISBLANK(GoEvent.Event_Time_End__c)}">
    <b>End Time:</b><apex:outputField value="{!GoEvent.Event_Time_End__c}"/>
</apex:outputPanel>

这是仅在时间不为空时才会呈现的输出,输出字段将根据用户区域设置等本地化时间。