Html Visualforce:仅当值不为null时渲染引发异常

Html Visualforce:仅当值不为null时渲染引发异常,html,salesforce,apex,visualforce,Html,Salesforce,Apex,Visualforce,我正在构建一个visualforce页面,其中有一个包含多个列的apex:datatable 现在,我希望列“折扣”仅在其值不为null且>0时显示 我的代码如下: <apex:dataTable width="100%" value="{!Opportunity.OpportunityLineItems}" var="oli"> <apex:column wid

我正在构建一个visualforce页面,其中有一个包含多个列的apex:datatable

现在,我希望列“折扣”仅在其值不为null且>0时显示

我的代码如下:

<apex:dataTable width="100%" value="{!Opportunity.OpportunityLineItems}" var="oli">
                            <apex:column width="50%" headerClass="tableheaderleft"  styleClass="tablebodyleft">
                                <apex:facet name="header">Bezeichnung</apex:facet>
                                <apex:OutputField value="{!oli.Name}"/>
                             </apex:column>
                            <apex:column width="{!If(oli.Discount!=null,If((oli.Discount>0),"10%","10%"),"10%")}" headerClass="tableheadercenter" footerClass="tablefootercenter" styleClass="tablebodycenter">
                                <apex:facet name="header">Anzahl</apex:facet>
                                <apex:OutputField value="{!oli.Quantity}"/>
                                <apex:facet name="footer"></apex:facet>
                            </apex:column>
                            <apex:column width="20%" headerClass="tableheaderright"  styleClass="tablebodyright">
                                <apex:facet name="header">Einzelbetrag</apex:facet>
                                <apex:OutputField value="{!oli.UnitPrice}"/>
                                <apex:facet name="footer"></apex:facet>
                            </apex:column>
                            
                         
                           <apex:column  rendered="{!If(oli.Discount!=null,(oli.Discount>0),false)}" headerClass="tableheadercenter" footerClass="tablefootercenter" styleClass="tablebodycenter">
                                <apex:facet name="header">Rabatt</apex:facet>
                                <apex:OutputField value="{!oli.Discount}"/>
                                <apex:facet name="footer"></apex:facet>
                            </apex:column>  
                            
                            <apex:column width="20%" headerClass="tableheaderright"  styleClass="tablebodyright">
                                <apex:facet name="header">Gesamtbetrag</apex:facet>
                                <apex:OutputField value="{!oli.TotalPrice}"/>
                                <apex:facet name="footer"></apex:facet>
                            </apex:column>                                                                                            
                        </apex:dataTable>

名称
安扎尔
埃因泽尔贝特拉格
拉巴特
Gesamtbetrag
但我总是遇到以下例外情况:

javax.faces.FacesException:core.apexpages.exceptions.ApexPagesDeveloperException:运算符'>'的参数类型不正确

有人知道为什么会发生这种异常吗?是否会因为折扣返回百分比值而发生这种情况


非常感谢

双引号中有双引号。可以改用单引号

例如


安扎尔
独立示例-


您的浏览器不支持HTML5画布标记。
您在评论中澄清了“仅当至少有一行有值时才显示整个列”

是否有从Opp行项目到Opp的折扣相关字段?您可以执行类似以下操作:
rendered=“{!Opportunity.discountlinescont\uuuu c>0}”
{!Opportunity.TotalDiscount\uu c>0}

如果您有apex控制器(或扩展),您可以检查线条并设置一些布尔标志,然后基于此进行渲染。这是官方的方式

非官方的,您可以滥用

像这样的。没有试着运行它,但应该给你一个想法

<apex:variable var="hasDiscountLines" value="{!false}" />
<apex:repeat value="{!Opportunity.OpportunityLineItems}" var="oli">
    <apex:variable var="hasDiscountLines" value="{!hasDiscountLines || oli.Discount != null}" />
</apex:repeat>

(...)
<apex:dataTable width="100%" value="{!Opportunity.OpportunityLineItems}" var="oli">
    <apex:column  rendered="{!hasDiscountLines}">
    (...)
</apex:dataTable>

(...)
(...)

谢谢您的回答。我的主要问题是,我想使用if语句在“Rabatt”列中设置呈现属性,这取决于折扣是否有值。但我尝试的每一种解决方案都不会隐藏该列。你有正确的if语句的技巧吗?最简单的隐藏方法是通过css,就像你用来隐藏宽度一样
class=“{!IF(true==true,'display:none;':'display:block;'}”
您希望列标题(&整列)仅在所有行的折扣>0时显示吗?SF决定如何处理标题“oli”时,可能还不存在,可以说您不在行循环中。请查看是否可以将条件设置为“{!Opportunity.OpportunityLineItems[0].Discount>0}?感谢您的回复!我只想在至少一行有值的情况下显示整个列。我尝试了您的解决方案,但出现了以下错误:值为“null”当我以预览模式呈现页面时,不允许运算符“>”,一切正常。只有在我向URL添加ID以填充值时,才会发生错误。。非常感谢!!{!Opportunity.TotalDiscount\uu c>0}解决了我的问题!我真的不知道为什么,但我尝试了几个If语句,之前所有语句都不起作用。我认为TotalDiscount在不同字段类型的bc中工作。不管为什么,它工作正常!嗯。数字/货币字段的汇总也将是数字/货币,如果折扣是文本、选取列表等,则需要额外的转换。奇怪。嗯,谢谢你的接受,很高兴我能帮上忙!