In VisualForce, debugging errors can be pretty challenging at times. It’s usually best to handle before they could potentially occur.
Checking if a list is null and has no results is pretty easy. The best way to do this is to use the ISNULL operator and and to check if the results has a size that isn’t 0.
Here’s how to check if a list called results isn’t null.
<apex:pageBlockTable value="{!results}" var="l" rendered="{!NOT(ISNULL(results))}">
Here’s how to check if a list called results has a size > 0. This works, because lists can’t have a negative size. I do this because I find that in some cases the greater than ( >) and less than (<) operators can mess with the rendered attribute.
<apex:pageBlockTable value="{!results}" var="l" rendered="{! results.size != 0)}">
We can then combine these two conditions together and have a pretty bulletproof solution that won’t crash the page.
<apex:pageBlockTable value="{!results}" var="l" rendered="{! NOT(ISNULL(results)) && (results.size != 0))}">
And of course, we can even add a page block instead that renders when there’s no results and tells the user that.