提升InstantiationException

时间:2013-02-22 10:51:02

标签: scala lift

这是我的代码 -

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 个答案:

答案 0 :(得分: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)
相关问题