Search code examples
jsf-2jstl

How to use if, else condition in jsf to display image


I have a condition where I have an enrollment form in which if userid is 0 it should show the dummy image and when I edit user from any update, I check for if userid which is not equal to 0 then display the image corresponding to userid.

I used JSTL inside jsf page. But always it tries to go to else loop for showing image. The functionality is working fine. The only thing is I can't display the dummy image when I visit the page first. Here s my code.:

<c:if test="${'#{user.userId}' == '0'}">
  <a href="Images/thumb_02.jpg" target="_blank" ></a>
  <img src="Images/thumb_02.jpg" />
</c:if>
<c:otherwise>
  <a href="/DisplayBlobExample?userId=#{user.userId}" target="_blank"</a>
  <img src="/DisplayBlobExample?userId=#{user.userId}" />
</c:otherwise>

Can I use this JSTL tag or can I do it using jsf?


Solution

  • It is illegal to nest EL expressions: you should inline them. Using JSTL is perfectly valid in your situation. Correcting the mistake, you'll make the code working:

    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jstl/core">
        <c:if test="#{not empty user or user.userId eq 0}">
            <a href="Images/thumb_02.jpg" target="_blank" ></a>
            <img src="Images/thumb_02.jpg" />
        </c:if>
        <c:if test="#{empty user or user.userId eq 0}">
            <a href="/DisplayBlobExample?userId=#{user.userId}" target="_blank"></a>
            <img src="/DisplayBlobExample?userId=#{user.userId}" />
        </c:if>
    </html>
    

    Another solution is to specify all the conditions you want inside an EL of one element. Though it could be heavier and less readable, here it is:

    <a href="#{not empty user or user.userId eq 0 ? '/Images/thumb_02.jpg' : '/DisplayBlobExample?userId='}#{not empty user or user.userId eq 0 ? '' : user.userId}" target="_blank"></a>
    <img src="#{not empty user or user.userId eq 0 ? '/Images/thumb_02.jpg' : '/DisplayBlobExample?userId='}#{not empty user or user.userId eq 0 ? '' : user.userId}" target="_blank"></img>