在scala中从控制器调用方法时遇到问题

时间:2017-04-26 13:03:34

标签: scala playframework slick

我使用scala和slick的playframework。

在我的dto(dao)中我这样做:

class processDTO @Inject() (protected val dbConfigProvider: DatabaseConfigProvider) extends HasDatabaseConfigProvider[JdbcProfile]
  with ProcessTemplatesComponent {
  import driver.api._

  private val processTemplates = TableQuery[ProcessTemplates]

  def getAll(): Future[Seq[ProcessTemplatesModel]] = db.run { processTemplates.to[Seq].result }
}

在控制器中我这样做:

@Singleton
class ProcessesController @Inject() (processDTO: processDTO,  actionBuilder: ActionBuilders) extends Controller{

  def getProcesses() = actionBuilder.DynamicAction(name = "pureLuck").defaultHandler() {
    request =>
      processDTO.getAll().map(_.map(result => {
      }))
        .map(result => Ok(Json.toJson(result)))
  }
}

现在我收到了这个错误 enter image description here

enter image description here

3 个答案:

答案 0 :(得分:2)

首先,您需要导入执行上下文。 PlayFramework有自己的背景。添加此导入 play.api.libs.concurrent.Execution.Implicits ._ Play documentation

你还需要从这段代码中返回一些东西:

_.map(result => {})

目前您返回的单位无法转换为json。

答案 1 :(得分:1)

错误告诉您需要知道的内容。在文件顶部添加import scala.concurrent.ExecutionContext.Implicits.global应修复它。

答案 2 :(得分:1)

一个问题是缺乏执行上下文,正如其他人所提到的那样。

从你的json错误开始,你需要实现一个Write converter来将import org.openqa.selenium.WebDriver; import org.openqa.selenium.safari.SafariDriver; public class SafariDriverDemo { public static void main(String[] args) throws InterruptedException { WebDriver driver; driver = new SafariDriver(); String baseURL = "https://www.google.com"; driver.get(baseURL); Thread.sleep(3000); driver.quit(); } } 个对象转换为json。