我有HTML和表达式,如果字段为值,我希望显示该表达式。如果它没有,则根本不显示它。
{! IF( ISBLANK(GoEvent.Event_Time_End__c), '', '<b>End Time:</b> {!GoEvent.Event_Time_End__c}' ) }
我认为我的条件设置正确,但HTML无法呈现,并且表达式中的正确值不会显示。看起来像这样。
答案 0 :(得分:0)
要使代码按预期工作,您需要将输出包装在顶点: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"/>
然而,鉴于你的代码实际上是说只显示输出,如果不是null,我认为你最好用这样的东西:
<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>
这是仅在时间不为空时呈现的输出,输出字段将根据用户区域设置等本地化时间。