2017-03-15 1 views

Répondre

1

Il n'y a aucun moyen vraiment élégant, je crois. C'est parce que ces calculs n'appartiennent pas à la couche de vue. Cela est vrai non seulement pour ISML mais pour d'autres moteurs de gabarit, par ex. Thymeleaf. Voir here.

ISLOOP nécessite une des instances Java standard suivantes dans iterator:

java.util.Enumeration 
java.util.Iterator 
java.util.Collection 

Par exemple:

<isloop iterator="products" alias="product" counter="c"> 

</isloop> 

Le flux de contrôle dans la boucle peut être modifiée avec isbreak et isnext:

<isloop 
iterator = "{ISML variable identifier}" 
[ alias = "{simple name}" ] 
[ counter = "{counter name}" ] 
> 
... some HTML and ISML code ... 
[<isnext>] 
[<isbreak>] 
</isloop> 

Si vous vraiment besoin que vous pouvez créer, par exemple, votre propre iterator aussi simple que cela et le mettre dans le dictionnaire de pipeline à partir d'un pipeline ou un module ISML:

class MyIterator implements Iterator<Integer> 
{ 
    private final int max; 
    private int current; 

    MyIterator(int max) 
    { 
     this.max = max; 
    } 

    @Override 
    public boolean hasNext() 
    { 
     return current < max; 
    } 

    @Override 
    public Integer next() 
    { 
     return current++; 
    } 
} 

Vous pouvez également utiliser JSP simple scriptlet intégré dans le module ISML, ISML etc. Si vous avez besoin d'une réponse plus précise s'il vous plaît fournir plus de contexte dans votre question.