2009-08-07 5 views
1

Я начинаю изучать лифт, и я застрял. У меня проблема с простой фрагмент кода:Подъем: как получить текущего зарегистрированного пользователя?

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) 

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

+0

Был Scala установлен на Maven, или вы используете конкретную версию этого? Кроме того, какая версия JDK? –

ответ

3

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

_.lastName .is