Kurz gesagt: Nein. Das Design von Lift unterscheidet streng zwischen Logik und Design und verbietet daher die Verwendung von generalisierten Tags im Template-Markup.
Werfen Sie einen Blick auf die view first article, um zu sehen, wie Aufzug Iterationen behandeln kann.
Ein Beispiel aus dem Artikel: Ihr Markup:
<table>
<lift:show.users>
<tr>
<td><f:first_name>David</f:first_name></td>
<td><f:last_name>Pollak</f:last_name></td>
</tr>
</lift:show.users>
</table>
Ihr Code:
class Show {
def users(xhtml: NodeSeq): NodeSeq =
Users.findAll.flatMap(user =>
bind("f", xhtml,
"first_name" -> user.firstName,
"last_name" -> user.nameName
)
)
}
Nun, was Aufzug vorhanden ist, wenn es der Tag-Inhalt <lift:show.users>
ruft die entsprechende Methode mit dem Tag der sieht als Argument. Das Tag wird dann durch den Rückgabewert der Methode users
ersetzt.
users
Die Methode macht die Iteration über alle Users
und für jeden Benutzer, es bind
die Werte des ersten und die zweiten Namen der inneren xhtml
s. Alle diese Iterationen werden dann verkettet (über flatMap
) und zurückgegeben.
Als ich mit dem Aufzug anfing, fand ich diesen Ansatz immer etwas zu starr; mit einer kleinen Schleife hier und da, wie könnte das weh tun? Aber jetzt, da ich weiß, wie einfach es ist, und zu nennen, erstellen Sie Ihre eigenen Snippets aus dem Template-Code, ich kann mir nicht vorstellen, irgendetwas wie JSP mehr zu verwenden. Es ist schwach im Vergleich und verstopft Ihr Markup. Und natürlich verlieren Sie viel von Scalas Validierungskraft.
Hinweise:
Der Grund, warum die Template-Tags mit Inhalt gefüllt werden, ist für die Zwecke der Gestaltung. In diesem Fall werden die Dummy-Tags und Werte während der bind
ersetzt. Die Template-Designer können somit die Tags mit mehr oder weniger bedeutungsvollem Inhalt füllen, was es dem Codierer ermöglicht, die Semantik, die der Entwickler im Sinn hatte, besser zu verstehen.
Danke für die Erklärung und schnelle Antwort. :) – ksemeks
Warum sind "David" und "Pollack" da drin? –
Weil es vom Lift-Wiki kopiert wurde. – Debilski