2010-05-22 9 views
14

So nach Sun J2EE-Dokumentation (http://docs.sun.com/app/docs/doc/819-3669/bnani?l=en&a=view), "Wenn ein Tag-Attribut nicht erforderlich ist, sollte ein Tag-Handler einen Standardwert angeben."J2EE: Standardwerte für benutzerdefinierte Tag-Attribute

Meine Frage ist, wie definiere ich einen Standardwert gemäß der Beschreibung der Dokumentation. Hier ist der Code:

Offensichtlich wird dieses Tag nicht kompilieren, weil es fehlt die Tag-Anweisung und der Core-Bibliothek importieren. Mein Punkt ist, dass ich möchte, dass die Eigenschaft "visible" auf TRUE gesetzt wird. Das Tag-Attribut ist nicht erforderlich, daher sollte der Tag-Handler einen Standardwert angeben. Ich möchte einen Standardwert angeben, also was fehlt mir?

Jede Hilfe wird sehr geschätzt.

Antwort

15

Ich denke, ich werde meine eigene Frage beantworten. Ich hatte eine Epiphanie und erkannte, dass java.lang.Boolean eine Klasse und keine Primitive ist. Dies bedeutet, dass der Wert null sein kann, und nach dem Testen ist dieser Wert höchstwahrscheinlich null. Wenn ein Wert nicht definiert ist, wird Null übergeben. Ansonsten ist der Wert, was auch immer übergeben wurde. Das erste, was ich nach der Deklaration des Attributs mache, ist zu überprüfen, ob es null ist. Wenn es null ist, dann weiß ich, ein Wert wurde nicht übergeben oder jemand an mir vorbei null, und es sollte bis zu einem gewissen Standardwert umgewandelt werden:

<c:if test="${visible == null}"><c:set var="visible" value="${true}" /></c:if> 
+0

sehen: http://stackoverflow.com/questions/3136415/default-value-on-jsp-custom-tag-attribute – gavenkoa

+1

In meinem Fall ist es nicht funktioniert . Mein boolesches Attribut ist niemals null: Wenn ich es nicht setze, muss es den Konstruktor 'new Boolean (null) 'aufrufen, so dass ich immer einen Wert ungleich' false 'bekomme. – Rafa

5

Mit JSP EL und Konditionaloperator es ist ein wenig sauberer und noch kürzer:

<c:set var="visible" value="${(empty visible) ? true : visible}" /> 

Grüße

Verwandte Themen