Frage

gibt es einen Aufzug Snippet:

<lift:Login>
  <entry:name>
     No user logged in
  </entry:name>
</lift:Login>
Ich weiß, dass ich die Benutzername Helpers.bind kann, wenn der Benutzer angemeldet ist, aber wie kann ich den früheren Text in geschlossenen bewahren? Es scheint keine Unterstützung Projekt voran Elemente zu sein, wenn ich scala api sehen, xhtml \\ "entry:name" Ausbeuten nichts mehr als leerer Knoten. Also, wie kann ich erreichen, um dieses Ziel?
BEARBEITEN: Für den Fall, wenn der Benutzer angemeldet ist, möchte ich zeigen: User 123 Im anderen Fall mag ich den ursprünglichen Text im Code-Schnipsel zeigen, mit anderen Worten, ich möchte nur den Liftvoran Tags entfernen, die für Rahmen unverzichtbar sind, aber sie haben nichts Endbenutzers html zu tun: No user logged in

War es hilfreich?

Lösung

Es ist nicht klar, was Sie bereits versucht haben, aber in den meisten Fällen gibt es keine Notwendigkeit für Scala XML-Transformationen. Helpers.bind Verwendung von in der Regel ausreichend und kann mit XML-Präfixen richtig umgehen. (Scala XML-Transformationen API manchmal fühlt sich ein wenig uneben in dieser Hinsicht.)

Nicht 100% sicher, was Sie tun wollen, aber das ist, wie ich die Benutzername <entry:name/> in, wenn Sie angemeldet binden würde sonst den Standardtext angezeigt.

class Login {
  def render(xhtml: NodeSeq) = bind("entry", xhtml, "name" -> name _)
  def name(in: NodeSeq) = User.currentUser.map(_.shortName).map(Text(_)) openOr in
}

Addition : Der "name" -> name _ Teil bedeutet, dass das Verfahren name sollte mit dem Inhalt des <entry:name>-Tages und das Ergebnisses sollte den gesamten Tag ersetzt aufgerufen werden. (Ich muss sagen, ich bin nicht ganz sicher, was Sie bereits über Lift wissen, mein Eindruck ist, dass, wenn man weiß, wie man binden User 123 sollte man auch wissen, wie andere Informationen zu binden ...)

Der Hinterstrich benötigt wird, um hier den Compiler zu helfen. Wenn Sie nicht über eine Transformation des ursprünglichen Inhalts des Tags tun wollen, würden Sie einfach bindet ein val oder ein def someMethod: NodeSeq und es dann ohne Unterstrich oder auch Inline. Z.B. bind("entry", xhtml, "name" -> <span>Some NodeSeq</span>)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top