Лифт: как получить текущего вошедшего в систему пользователя? - PullRequest
1 голос
/ 07 августа 2009

Я начинаю изучать лифт, и я застрял. У меня проблема с простым фрагментом:

class Util {

    def in(html: NodeSeq) : NodeSeq ={

        if (User.loggedIn_?)
            Helpers.bind("user", html, "name" -> User.currentUser.map(_.lastName).open_!)
        else
            NodeSeq.Empty
    }

Это должно ввести текущее имя пользователя, но я получаю исключение:

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.scala_tools.maven.executions.MainHelper.runMain(MainHelper.java:105)
at org.scala_tools.maven.executions.MainWithArgsInFile.main(MainWithArgsInFile.java:26)
Caused by: scala.tools.nsc.symtab.Types$TypeError: type mismatch;
 found   : x$1.lastName.type (with underlying type object x$1.lastName)
 required: com.liftworkshop.model.User#lastName.type
    at scala.tools.nsc.typechecker.Contexts$Context.error(Contexts.scala:352)

Что происходит?

1 Ответ

3 голосов
/ 19 сентября 2009

Проблема здесь в том, что _.lastName на самом деле является одноэлементным объектом типа MappedString, а не фактическим строковым значением. Чтобы получить значение String, вы должны сделать:

_. * LastName 1003 * .is

...