Meer JSTL

In de vorige tutorials hebben we het al gehad over JSTL. In deze tutorial gaan we er verder op in. In deze tutorial gaan we er vanuit dat je als prefix hebt gekozen voor “c”. We zullen c:out, c:foreach, c:choose en c:if behandelen in deze tutorial.

C:out wordt gebruikt om naar de browser te schrijven. Natuurlijk kunnen we dit ook doen via ‘<%= %>’. Het voordeel aan deze tag is dat we parameters kunnen weergeven.

Als we bv. “<i>test</i>” letterlijk willen weergeven zal de <%= => tags ervoor zorgen dat dit als test wordt weergegeven, terwijl we de tags willen laten zien. Daarom kunnen we in C:out als parameter escapeXML aan of af zetten. Standaard staat de waarde op true. Wat wil zeggen dat standaard de <i>-tag wordt geëscaped en gewoon wordt weergegeven.

<% String test = "<i>test</i>"; %>
<c:out value='<%= test%>' escapeXml='true' />

Dit zal de gewenste output geven.

De c:forEach tag hebben we al eens gezien. In dit voorbeeld gaan we een geneste forEach loop demonstreren. Dit wil zeggen dat we door een lijst van lijsten zullen loopen om alle items weer te geven die in deze lijsten zit.

<%
String[] songs1 = {"Heart of The Sunrise", "Awaken", "Close to the Edge"};
String[] songs2 = {"Atom heart mother", "Dogs", "Time"};
java.util.List songs = new java.util.ArrayList();
songs.add(songs1);
songs.add(songs2);
%>
<c:forEach var="songsChild" items="<%= songs %>">
  <c:forEach var "song" items="${songsChild}">
     ${song}<br />
  </c:forEach>
</c:forEach>

Deze code zal er voor zorgen dat door beide arrays wordt geloopt en toont alle onderdelen van de array.

Stel we willen een keuze maken op onze website. Laten we zeggen aan de hand van het gebruikerstype willen we een bepaalde tekst laten zien. Dan moeten we gebruik maken van de c:choose, c:when en c:otherwise tags.

<c:choose>
  <c:when test="${userType == 'admin'}">
    Hi admin!
  </c:when>
  <c:when test="${userType == 'user'}">
    Hi user!
  </c:when>
  <c:otherwise>
    Show login form
  </c:otherwise>
</c:choose>

Deze zal dus in het geval van admin de boodschap Hi admin! laten zien, in het geval van user Hi user! en in anders laat hij het login formulier zien.

Soms moeten we slechts 1 ding nakijken: is de gebruiker ingelogd. Dan is de c:if tag genoeg.

<c:if test="${userType == 'user'}">
  Welcome user. You can now see things other people can't!
</if>
Something everyone can see goes here.

Dit zorgt ervoor dat een ingelogde gebruiker zaken kan zien die andere gebruikers niet kunnen.

Meer JSTL