Domanda

Ho visto del codice come il seguente in un JSP

<c:if test="<%=request.isUserInRole(RoleEnum.USER.getCode())%>">
    <li>user</li>
</c:if>

La mia confusione riguarda il "=" che appare nel valore di test attributo.La mia comprensione era che qualsiasi cosa fosse inclusa all'interno <%= %> viene stampato nell'output, ma sicuramente il valore assegnato a test deve essere booleano, quindi perché funziona?

Per i punti bonus, esiste un modo per modificare il valore dell'attributo sopra in modo tale che non utilizzi il codice scriptlet?Presumibilmente, ciò significa utilizzare invece EL.

Saluti, Don

È stato utile?

Soluzione

Tutto ciò che test L'attributo cerca per determinare se qualcosa è vero è la stringa "true" (senza distinzione tra maiuscole e minuscole).Ad esempio, il codice seguente stamperà "Hello world!"

<c:if test="true">Hello world!</c:if>

Il codice all'interno di <%= %> restituisce un valore booleano, quindi stamperà la stringa "true" o "false", che è esattamente ciò che <c:if> il tag cerca.

Altri suggerimenti

Puoi anche usare qualcosa di simile

<c:if test="${ testObject.testPropert == "testValue" }">...</c:if>

L'espressione tra <%= %> viene valutata prima del tag c:if.Quindi, supponendo che | request.isuserInrole | restituisce | vero |, il tuo esempio verrebbe valutato per primo:

<c:if test="true">
    <li>user</li>
</c:if>

e quindi il tag c:if verrebbe eseguito.

Gli attributi nelle librerie di tag JSP in generale possono essere statici o risolti al momento della richiesta.Se vengono risolti al momento della richiesta, JSP risolverà il loro valore in fase di esecuzione e trasmetterà l'output al tag.Ciò significa che puoi inserire praticamente qualsiasi codice JSP nell'attributo e il tag si comporterà di conseguenza in base all'output prodotto.

Se guardi i documenti della taglib jstl puoi vedere quali attributi sono più richiesti e quali no. http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html

<%=%> da solo verrà inviato all'output, nel contesto del JSTL verrà valutato in una stringa

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top