2013-02-22 119 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 2013-04-11 10:53:08