Search code examples
salesforcevisualforce

if-else conditional block in visualforce


I had used c:if, c:when JSTL tags in jsp. But I don't know if anything similar is available for visual force pages. just for example I am providing sample code for jsp. --

    <h1>A Demo conditional section code</h1>
    <c:choose>
       <c:when test="${param.colorField == 'red'}">
         <table border="0" width="150" height="50" bgcolor="#ff0000">
           <tr><td>It is red</td></tr>
         </table>
      </c:when>
      <c:when test="${param.colorField == 'blue'}">
       <table border="0" width="150" height="50" bgcolor="#0000ff">
         <tr><td>It is blue</td></tr>
      </table>
    </c:when>
    <c:when test="${param.colorField == 'green'}">
        <table border="0" width="150" height="50" bgcolor="#00ff00">
          <tr><td>Green table</td></tr>
        </table>
    </c:when>
    <c:otherwise>
      <table border="0" width="150" height="50" bgcolor="#000000">
        <tr><td>No colour changed</td></tr>
       </table>
    </c:otherwise>
</c:choose>
<br/>
and other codes....

I am missing this kind of page block preparation in vf pages.


Solution

  • What I have found that we can use outputpanel (<apex:outputpanel>) for any block and use the rendered attribute to handle the condition for loading it.

    <h1>A Demo conditional section code</h1>
        <apex:outputpanel rendered="{!param.colorField == 'red'}">
             <table border="0" width="150" height="50" bgcolor="#ff0000">
               <tr><td>It is red</td></tr>
             </table>
        </apex:outputpanel>
        <apex:outputpanel rendered="{!param.colorField == 'blue'}">
           <table border="0" width="150" height="50" bgcolor="#0000ff">
             <tr><td>It is blue</td></tr>
          </table>
        </apex:outputpanel>
        :
        :
    and other codes....