Привет.
Сегодня Salesforce сломал мой мозг. Я долго не мог понять почем не работает моя страница. Все перепробовал, потратил кучу времени, а прикол оказался в самом казалось бы безобидном месте.
Народ, это у меня глюки или в Salesforce?
Вот кусок кода:
FUCK
<div>
<apex:outputPanel layout="block" rendered="{!pLastLocation!=null}" >
AAAAA
</apex:outputPanel>
<apex:outputPanel layout="block" rendered="{!pLastLocation==null}" >
BBBBB
</apex:outputPanel>
</div>
<div>
<apex:outputPanel layout="block" rendered="{!ISNULL(pLastLocation)}" >
CCCCC
</apex:outputPanel>
<apex:outputPanel layout="block" rendered="{!NOT(ISNULL(pLastLocation))}" >
DDDDD
</apex:outputPanel>
</div>
Вот что мне возвращает SF:
FUCK
AAAAA
BBBBB
CCCCC
Как такое может быть?
pLastLocation - это переменная которая должна содержать экземпляр apex класса (DTO).
В этот момент она только объявлена, но не проинициализирована, т.е. по идее должна содержать null.
А серверный код где?
Контоллер/getpLastLocation, еще что-то)
Если правильно помню есть у них такой косяк. Я обычно проверяю на size
Кстати я раньше только и использовал FORMULA для всякого рода проверок (ISNULL(), ISBLANK(), NOT(), OR(), AND()) да вот не помню почему перешел на простые проверки типа == != && || в блоках Rendered. По ходу это была плохая идея, хотя до этого проблем не было.