Question

Y at-il un moyen de faire des opérateurs ternaires en vitesse? Voilà ce que je voudrais faire:

#set ($name = ($args.get(0) == "") ? "default" : $args.get(0))

Au lieu de chunky if-else

#if ($args.get(0) == "")
    #set ($name = "default")
#else
    #set ($name = $args.get(0))
#end

Toutes les idées?

Était-ce utile?

La solution

De l'expérience et la lecture VTL Référence il n'y a aucun moyen pour faire ça. Si vous aviez beaucoup de devoirs comme celui-ci peut-être vous pouvez regarder la définition de votre propre Velocimacro pour essayer d'éviter de répéter le cas d'autre.

Par exemple, si la macro imprime une seule chaîne que vous pourrait faire ce qui suit:

#set ($name = "#condOpt($args.get(0), "default")")

Les guillemets doubles autour de l'appel de macro sont importants, car cela signifie que l'ERS de l'#set est analysé.

Autres conseils

J'ai fini par faire comme vous l'avez dit, Mark:

#macro(condOp $check, $default)
    #if ($check == "")
        $default
    #else
        $check
    #end
#end

Et puis je peux l'appeler comme ceci:

#set ($name = "#condOp($args.get(0), 'default')")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top