Comme il n'y a pas une telle fonction comme LENGTH[...]
dans la norme JSP/JSTL/EL, il est impossible de parler des différences. Le fn:length()
est le seul moyen d'obtenir la longueur d'un String
, un Object[]
ou un Collection
.
${fn:length(someCollection)}
Mise à jour selon votre (fixe) Exemple:
<c:when test="${object.field ne null || LENGTH[object.field] > 0}">
Je ne l'ai jamais vu auparavant. Il semble que votre webapp/servletcontainer utilise un résolveur EL personnalisé. Si cela est vrai, vous devriez le voir déclaré dans le fichier web.xml
de webapp. Quoiqu'il en soit, vous préférez utiliser le mot-clé EL empty
ici. Il vérifie non seulement null
, mais aussi pour la longueur de String
, Object[]
ou Collection
.
<c:when test="${not empty object.field}">
Pas besoin de fn:length()
ici.
La notation accolade []
est à son tour par la voie souvent utilisée pour accéder aux propriétés par touches dynamiques. Par exemple.
${bean[propertyname]}
Si propertyname
décide "foo", le ci-dessus effectivement la même que ${bean.foo}
. Il est également souvent utilisé sur Map
objets de la portée.
Peut-être parce que le premier n'existe pas? Où as-tu lu/entendu/vu à propos du premier? N'est-ce pas juste une mauvaise interprétation de votre part? La notation d'accolade '[]' est souvent utilisée pour accéder aux propriétés par des clés dynamiques. – BalusC
En fait, à mon travail, ils m'ont demandé de changer chaque instance de LONGUEUR [..] pour utiliser la fonction jstl length. et le code est en production, donc je sais que ça fonctionnait ... Je n'ai pas pu trouver la LONGUEUR [] en recherchant sur Google car google ignore toujours le [] et finit par retourner la fonction régulière fn: longueur – Sammy
Copypaste du code exemples où cela a été utilisé. – BalusC