Ich sah einige Code wie folgt in einer JSPTest Attribut in JSTL <c:if> Tag
<c:if test="<%=request.isUserInRole(RoleEnum.USER.getCode())%>">
<li>user</li>
</c:if>
Meine Verwirrung ist über die „=“, die in dem Wert des test
Attribut erscheint. Mein Verständnis war, dass alles, was in <%= %>
enthalten ist, auf die Ausgabe gedruckt wird, aber sicherlich muss der Wert, der dem Test zugewiesen wird, ein Boolescher Wert sein. Warum funktioniert das?
Gibt es für Bonuspunkte eine Möglichkeit, den Attributwert darüber zu ändern, so dass kein Skriptcode verwendet wird? Vermutlich heißt das, stattdessen EL zu verwenden.
Cheers, Don
<%= => wird gedruckt mit dem Ausgang nur verwenden, wenn es außerhalb eines JSP-Tag erscheint, als eine Antwort, sagte unten. Es wird jedoch * nicht * zu einer Zeichenkette ausgewertet, sondern zu dem Typ konvertiert, den das Attribut erwartet. Das Attribut 'test' des' '-Tags hat den Typ' boolean', also wird jeder Ausdruck, den das Scriptlet zurückgibt, zu einem 'boolean' gezwungen. –
mksios
Obwohl es interessant zu sehen ist, dass wenn Sie Zeichenfolge und Scriptlet innerhalb eines JSP-Tag-Attributs mischen, die Engine verwirrt wird und den gesamten Wert als Zeichenfolge interpretiert. Das heißt, 'führt das Scriptlet nicht aus, sondern erzwingt stattdessen den String' abc <%= true %> 'über' Boolean.valueOf() 'in einen booleschen Wert, der' false' zurückgibt. http://StackOverflow.com/Questions/8168821/Comparing-String-and-Boolean-in-Expression-Sprache –
mksios