2013-02-22 113 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