Je eigen TLD creëren
We hebben al eerder een Tag Lib gebruikt voor JSTL te gebruiken. Nu is het ook mogelijk om je eigen TLD’s te creëren en dat gaan we zien in deze tutorial.
Laten we eerst uitleggen wat een TLD is: een tld is een definitie voor een library van een of meer java klassen. Dit betekent dat ik een serie java klassen kan schrijven die een bepaalde functionaliteit uitoefenen en dat iedereen deze kan gebruiken als ik deze wens te distribueren.
Laten we terug het voorbeeld van de dobbelstenen nemen. Stel dat ik gewoon een dobbelsteen wil laten rollen en daarvoor een klasse heb geschreven DiceRoler. In deze klasse zit een methode roll die een random getal tussen 1 en 6 genereert. Deze methode willen we rechtstreeks in onze JSP aanroepen.
package dicegame;
public class DiceRoller {
public static int roll() {
return (int)((Math.random() * 6) + 1);
}
}
Deze klasse bevat dus de logica voor het rollen. Nu willen we in onze jsp het volgende kunnen doen:
<html>
<head><title>Roll</title></head>
<body>
${roller:roll()}
</body>
</html>
Dit kan natuurlijk niet zonder dat we ergens aangeven dat er gebruik moet gemaakt worden van de DiceRoller in het geval dat roller wordt aangeroepen. Daarom moeten we een .tld file aanmaken:
<?xml version="1.0" encoding="ISO-8859-1" ?> <taglib xmlns="http://www.java.sun.com/xml/ns/j2ee" xsi:schemaLocation="http://www.java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
<tlib-version>1.2</tlib-version> <uri>Roller</uri> <function> <name>roll></name> <function-class>dicegame.DiceRoller</function-class> <function-signature>int roll()</function-signature> </function> </taglib>
We definiëren eerst de naam van de taglib (Roller) en vervolgens maken we een functie aan. Deze functie verwijst naar de roll methode van de klasse DiceRoller.
Als laatste moeten we deze taglib nog inladen in onze jsp:
<%@ taglib prefix="roller" uri="Roller" %>
Als we dat bovenaan plaatsen dan herkent de jsp de methode die in Roller zitten.
Dat was het dan voor de tutorial over je eigen TLD creëren.