Leider kann ich nicht einen einfachen Weg finden, dies zu tun. Die einfachste Lösung, die ich finden konnte, war ein schnelles Tag zu schreiben (aber das könnte an meinem Mangel an Groovy-Erfahrung liegen).
Ich habe das mit diesem Code arbeiten.
Ihrer Ansicht
<a class="#{activeRoute href:@Application.index(), activeClass:'active' /}" href="@{Application.index()}">My Page</a>
Dann erstellen Sie eine neue FastTag für activeRoute
public class MyFastTag extends FastTags {
public static void _activeRoute(Map<?, ?> args, Closure body, PrintWriter out, GroovyTemplate.ExecutableTemplate template, int fromLine) {
Router.ActionDefinition actionDef = (Router.ActionDefinition) args.get("href");
String activeStyle = (String) args.get("activeClass");
String inactiveStyle = (String) args.get("inactiveClass");
if (Http.Request.current().action.equals(actionDef.action) && activeStyle != null) {
out.print(activeStyle);
}
else if (!Http.Request.current().action.equals(actionDef.action) && inactiveStyle != null) {
out.print(inactiveStyle);
}
}
}
Achten Sie darauf, die entsprechenden Importe hinzufügen.
Auf diese Weise können Sie eine aktive und inaktive Klasse angeben, die ein wenig mehr, als Sie
angefordert
Warum Sie 'sonst if' anstelle eines einfachen verwenden' else'? – niels
weil, wenn inactiveStyle null ist, würde es null als Stil drucken, und ich will nichts gedruckt, wenn activeStyle oder inactiveStyle null sind ....... Der erste Teil des if ist derselbe, aber der zweite Die Auswertung unterscheidet sich für die beiden if-Anweisungen – Codemwnci