小编cro*_*ies的帖子

Scala错误表明val不是模型对象的成员,尽管它是?

简介:我从成员事务表中提取用户ID列表,然后用于从数据库生成用户列表.然后,这将用于生成发送到列出与帐户关联的用户的页面的JSON.

背景:在游戏中使用Squeryl的Scala代码!骨架

错误: value id is not a member of Option[models.User]将用户映射到JSON生成器时

代码:这里的代码连续用于最终生成JSON

def memberIds(accountId: Long) = { from(DB.members)(m =>
      where(m.accountId === accountId)
        select (m)).map(_.userId).toSet
  }

def membersToAccount(id: Long) = {
    memberIds(id).map( i => models.User.get(i))
  }

def listMembers(accountId: Long) = {
    Json(generate(Account.membersToAccount(accountId)
      .map(user => Map(
      "id" -> user.id,
      "name" -> user.name,
      "username" -> user.username
    ))))
  }
Run Code Online (Sandbox Code Playgroud)

困惑: User类包含一个id值,看起来case class User( val id: Long, etc.我很困惑为什么会产生这个错误.是语法问题还是我映射用户的问题?谢谢!

scala

3
推荐指数
1
解决办法
6670
查看次数

如何在Play中加载和渲染模板!2.0?

在旧戏!v1模板加载非常简单.但现在我无法弄清楚如何以与下面方法类似的方式使用Scala模板:

val template = TemplateLoader.load(templateName)
val body = template.render(templateBinding)
Run Code Online (Sandbox Code Playgroud)

上面的用例是渲染一个模板,用于Scala中的电子邮件.

新的Scala API有一个类似的类,用于处理模板http://www.playframework.org/documentation/api/2.0/scala/index.html#play.api.templates.Html但是如何加载模板?我应该咬紧牙关并导入Groovy模板吗?谢谢!

templates scala playframework-2.0

3
推荐指数
1
解决办法
2399
查看次数

Javascript正则表达式检测CSV文件类型?

似乎有很多问题要求正则表达式来检测CSV文件类型,但是对于javascript都没有.

鉴于图像的正则表达式看起来像/^image\/(gif|jpeg|png)$/,有人知道CSV的外观是什么样的吗?

编辑要更清楚一点,寻找正则表达式的"操作方法",检查文件是否为CSV以及相关的公共扩展名.谢谢!

javascript regex

3
推荐指数
1
解决办法
4663
查看次数

Apache Mailer在Scala中抛出编译器错误?

创建了一个简单的Apache Commons Email对象并进行编译.已导入:import org.apache.commons.mail._并且javax.mail.internet.MimeMessage还执行了以下操作:

  def sendVerification(user: User) = {
    val email = new SimpleEmail()
        email.setHostName("smtp.sendgrid.net")
        email.setSmtpPort(465)
        email.setAuthenticator(new DefaultAuthenticator("user", "pass"))
        email.setSSLOnConnect(true)
        email.setFrom("Community Admin <admin@domain.com>")
        email.setSubject("TestMail")
        email.setMsg("""Welcome %s!

        Thanks for signing up. This email is to confirm your email address.

        Cheers,
        Admin Team
        """ format user.firstName)
        email.addTo(user.email)
        email.send()
  }
Run Code Online (Sandbox Code Playgroud)

错误如下:

[error] C:\Users\path\to\AccountService\models\User.scala:43: object mail is not a member of package javax
[error] import javax.mail.internet.MimeMessage
[error]              ^
[error] error while loading Email, Missing dependency 'class javax.mail.internet.MimeMessage', required by C:\Users\path\lib\commons-email-1.2.jar(org/apache/commons/mail/Email.class) …
Run Code Online (Sandbox Code Playgroud)

java scala apache-commons

3
推荐指数
1
解决办法
1024
查看次数

将String转换为Long时Scala NumberFormatException?

我们的应用程序是基于Scala并基于Play构建!框架.我使用Scala Random生成了一个随机数.这是我们应用中每个帐户的唯一键.

但是,当我将新帐户保存到数据库中时,它会抛出java.lang.NumberFormatException:

更多信息:我正在将一个帐户ID的字符串转换为Scala Long.我正在查找使用Squeryl对象,抓取ID,然后转换它.这是它的样子:

val account_id = Account.findAccountByUnique(account.uniqueKey).id.toLong

这就是findAccountByUnique的样子:

def findAccountByUnique(criteria: String) = {
    from(DB.accounts)(a =>
      where(a.uniqueKey == criteria)
        select (a))
  }
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪错误:

java.lang.NumberFormatException: For input string: "468b68c"
        at java.lang.NumberFormatException.forInputString(Unknown Source)
        at java.lang.Long.parseLong(Unknown Source)
        at java.lang.Long.parseLong(Unknown Source)
        at scala.collection.immutable.StringLike$class.toLong(StringLike.scala:209)
        at scala.collection.immutable.StringOps.toLong(StringOps.scala:31)
        at controllers.Accounts$.save(Accounts.scala:44)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:548)
        at play.mvc.ActionInvoker.invoke(ActionInvoker.java:502)
        at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:496)
        at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:473)
        at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)
        at play.server.PlayHandler$NettyInvocation.execute(PlayHandler.java:257)
        at play.Invoker$Invocation.run(Invoker.java:278)
        at play.server.PlayHandler$NettyInvocation.run(PlayHandler.java:235)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask$Sync.innerRun(Unknown …
Run Code Online (Sandbox Code Playgroud)

java scala playframework

2
推荐指数
1
解决办法
7930
查看次数

如何设置Play的POST标题!2.0 webservice查询?

我正在构建一个Web服务请求,将一些数据提交给我们使用的第三方服务:

val promise = WS.url("http://example.com/api/xxx/testers?api_key=%s" format(prefineryAPIKey)).post(requestBody)
val data = promise.value.get.body
Run Code Online (Sandbox Code Playgroud)

该变量requestBody是XML内容,我需要发送此帖子"Content-Type: text/xml".如何在Web服务中设置它?它是否像Play!链接一样有效.as("text/xml")

谢谢

scala playframework-2.0

2
推荐指数
1
解决办法
1881
查看次数

如何为Play合并两个Scala(String,String)!查询字符串?

最终目标是连接两个传递给Play的查询参数!网络服务请求.看起来像:

WS
.url(requestUri)
.withQueryString(finalQueries)
Run Code Online (Sandbox Code Playgroud)

我试图使用几个运算符,但它失败了:

val finalQueries = queryParams match {
        case Some(queries) =>
          tokenParam ++ queries
        case None =>
          tokenParam
}
Run Code Online (Sandbox Code Playgroud)

错误: value ++ is not a member of (String, String)

API文档显示withQueryString接受a(String, String)*

我对Play!的withQueryString方法有点困惑,因为它似乎每次访问时都会完全替换整个查询字符串.任何方式来合理地组合查询字符串?

编辑:下面是一个示例查询字符串(类型语法及其最终外观有点令人困惑......):

val queryString = ("timeMin" -> "2012-08-20T01%3A11%3A06.000Z")

scala playframework-2.0

2
推荐指数
1
解决办法
1199
查看次数

为什么同时运行三个Spray.io路由?

我在Spray.io中定义了以下路由.真正奇怪的是,每当我打电话时,/user/8dsdf974jj它实际上都会运行以下三条路线.幽默地,我注意到了,因为我同时收到了20封发送给我的验证电子邮件.

pathPrefix("user") {
  pathPrefix(PathElement) { id =>
        path("") {
              get { // code here }
        } ~
        path("verify" / "request") {
              get { // code here }
        } ~
        path("verify" / "confirm") {
              get { // code here }
        }
      }
}
Run Code Online (Sandbox Code Playgroud)

有人能解释为什么路径不会终止路由树吗?谢谢您的帮助.

scala spray

2
推荐指数
1
解决办法
1230
查看次数

将SecureSocial与后端用户服务/存储集成?

使用Play!2.0.4和SecureSocial 2(http://securesocial.ws/).Scala实现.这个问题的大部分将直接引用这里的示例:https://github.com/jaliss/securesocial/blob/2.0.12/samples/scala/demo/app/service/InMemoryUserService.scala

我试图找出作者关于后端与存储服务交互的初衷.关于这些def find(id: UserId)def findByEmailAndProvider(email: String, providerId: String):方法,SecureSocial是否希望提供可用于返回完整SocialUser课程的Facebook ID或电子邮件?

如果是这种情况,那么我们如何为每个用户分配我们自己的ID,以便我们可以将帐户链接在一起?因为似乎如果我将Identity扩展为包含通用ID,那么这也需要重写/扩展社交提供者吗?

至少,我试图弄清楚我应该为后端服务中的方法findsave方法公开哪些API /参数.如果需要澄清这个问题请告诉我:)

scala playframework playframework-2.0 securesocial

2
推荐指数
1
解决办法
1226
查看次数

为什么Scala查询返回为单位?

运行Squeryl调用以获取从多个位置提取的某些数据,但由于某种原因,它会作为一个单元返回.如何让它作为Iterable返回?

下面是拉数据:

/**
   * gets a stream for a particular user
   */
  def getUserStream(userId:Long) {
    User.teamIds(userId).toList.map( (team) =>
      Stream.findByTeam(team,0,5).map( (stream) => 
        List(stream)
      ).flatten
    ).flatten.sortBy(_.id)
  }
Run Code Online (Sandbox Code Playgroud)

然后输出数据,其中结果返回为Unit:

Stream.getUserStream(userId) match {
      case results => {
        Ok( generate(results.map( (stream) => Map(
                "id" -> stream.id,
                "model" -> stream.model,
                "time" -> stream.time,
                "content" -> stream.content
                ))
            ) ).as("application/json")
      }
      case _ => Ok("")
    }
Run Code Online (Sandbox Code Playgroud)

我最初的猜测是一个函数可以作为None返回,但它不会只返回一个空列表吗?

scala

1
推荐指数
1
解决办法
230
查看次数