2013-02-22 4 views
0

Вот мой код -Лифт InstantiationException

def sendAcceptInvitationMail(invitation: Invitation) { 
    val signupLink = Props.get("base.url").openOr("http://localhost:8080") + "/accounts/signup?code="+invitation.code.is 
    S.eval(<lift:embed what="/templates-hidden/emails/accept_invitation"> 
      <lift:bind-at name="name">{invitation.name.is}</lift:bind-at> 
      <lift:bind-at name="link"><a href={signupLink}>{signupLink}</a></lift:bind-at> 
     </lift:embed>) match { 
    case Full(msg) => 
     MailHelper.sendMail((invitation.email.is, invitation.name.is), S.?("subject.invitation.sent"), msg, MimeType.MIME_HTML) 
     debug("Accept invitation mail sent for: "+invitation.email.is) 

    case _ => warn("Invitation Accept Email not sent to: "+invitation.email.is+". Problem preparing message") 
    } 
} 

Я получаю это исключение.

Message: java.lang.InstantiationException: com.lgigs.admin.view.Admin 
java.lang.Class.newInstance0(Class.java:357) 
java.lang.Class.newInstance(Class.java:325) 
net.liftweb.http.Templates$$anonfun$lookForClasses$1$$anonfun$apply$9.apply(Templates.scala:264) 
net.liftweb.http.Templates$$anonfun$lookForClasses$1$$anonfun$apply$9.apply(Templates.scala:263) 
net.liftweb.common.Full.flatMap(Box.scala:493) 
net.liftweb.http.Templates$$anonfun$lookForClasses$1.apply(Templates.scala:262) 
net.liftweb.http.Templates$$anonfun$lookForClasses$1.apply(Templates.scala:260) 
scala.Function1$$anonfun$andThen$1.apply(Function1.scala:49) 
scala.collection.immutable.Stream.flatMap(Stream.scala:217) 
net.liftweb.util.ListHelpers$class.first(ListHelpers.scala:137) 
net.liftweb.util.Helpers$.first(Helpers.scala:34) 
net.liftweb.http.Templates$.lookForClasses(Templates.scala:259) 
net.liftweb.http.Templates$.findRawTemplate(Templates.scala:245) 
net.liftweb.http.Templates$.apply(Templates.scala:85) 
net.liftweb.http.DefaultRoutines$.rawResBundle(DefaultRoutines.scala:43) 
net.liftweb.http.DefaultRoutines$.net$liftweb$http$DefaultRoutines$$resBundleFor(DefaultRoutines.scala:59) 
net.liftweb.http.DefaultRoutines$$anonfun$3.apply(DefaultRoutines.scala:104) 
net.liftweb.http.DefaultRoutines$$anonfun$3.apply(DefaultRoutines.scala:101) 
net.liftweb.common.Full.flatMap(Box.scala:493) 
net.liftweb.http.DefaultRoutines$.resourceForCurrentReq(DefaultRoutines.scala:101) 
net.liftweb.http.LiftRules$$anon$13$$anonfun$$init$$14$$anonfun$apply$14.apply(LiftRules.scala:785) 
net.liftweb.http.LiftRules$$anon$13$$anonfun$$init$$14$$anonfun$apply$14.apply(LiftRules.scala:785) 
net.liftweb.http.S$class.resourceBundles(S.scala:884) 
net.liftweb.http.S$.resourceBundles(S.scala:48) 
net.liftweb.http.S$class.resourceBundles(S.scala:878) 
net.liftweb.http.S$.resourceBundles(S.scala:48) 
net.liftweb.http.S$class.$qmark(S.scala:928) 
net.liftweb.http.S$.$qmark(S.scala:48) 
com.lgigs.admin.snippet.Admin.sendAcceptInvitationMail$1(Admin.scala:129) 
com.lgigs.admin.snippet.Admin$$anonfun$save$1$2.apply(Admin.scala:148) 
com.lgigs.admin.snippet.Admin$$anonfun$save$1$2.apply(Admin.scala:141) 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike. 

Я отлажена и выяснил, что при чтении собственности с ресурса с использованием S.?('subject.invitation.sent') бросает это исключение. Но я использую тот же вызов функции во многих других фрагментах и ​​не имею никаких исключений. Нужна помощь с этим.

ответ

1

Большинство элементов в пакете S требуют, чтобы к нему был доступен действительный сеанс, и обычно требуется, чтобы доступ выполнялся в том же потоке, что и запрос Http. Есть MailHelper что-то, что вы написали? Я знаю, что лифт Mailer.sendMail происходит асинхронно через актера, так что может иметь какое-то отношение к нему.

Одна вещь, которую вы могли бы попробовать, если вы еще этого не сделали, выполняет перевод ранее. Что-то вроде:

case Full(msg) => 
     val i18nConfirmation = S.?("subject.invitation.sent") 
     MailHelper.sendMail((invitation.email.is, invitation.name.is), i18nConfirmation, msg, MimeType.MIME_HTML) 
     debug("Accept invitation mail sent for: "+invitation.email.is) 
+0

Спасибо. Да, это так. – Shwetanka

Смежные вопросы