object github is not a member of package com

投稿者: Anonymous build.sbt name := “””sample””” version := “1.0-SNAPSHOT” lazy val root = (project in file(“.”)).enablePlugins(PlayScala) scalaVersion := “2.11.6” libraryDependencies ++= Seq( jdbc, cache) libraryDependencies ++= Seq( “org.scalikejdbc” %% “scalikejdbc” % “2.2.+”, “com.h2database” % “h2” % “1.4.+”, “ch.qos.logback” % “logback-classic” % “1.1.+”, “jp.t2v” %% “play2-auth” % “0.13.2”, “jp.t2v” %% “play2-auth-test” % “0.13.2” % “test”, “com.github.t3hnar”…(Continue Reading)

Play Frameworkが起動したH2DBのWebConsoleを開く方法

投稿者: Anonymous Play Frameworkで作成したアプリケーションをsbt runするとH2DBが起動すると思いますが、 このH2DBの状態をWebConsoleから確認するにはどうしたら良いですか? [実行環境] Play 2.5 build.sbt libraryDependencies ++= Seq( “com.typesafe.play” %% “play-slick” % “1.1.1”, “com.typesafe.play” %% “play-slick-evolutions” % “1.1.1”, evolutions, “com.h2database” % “h2” % “1.4.191”, cache, ws, specs2 % Test) application.conf slick.dbs.default.driver=”slick.driver.H2Driver$” slick.dbs.default.db.driver=”org.h2.Driver” slick.dbs.default.db.url=”jdbc:h2:mem:test” 解決 H2の接続文字列が”jdbc:h2:mem:test”ですので、インメモリの組み込みモードで動作していることになります。 このため、アプリケーションにとって外部となるWebConsoleから当該のH2dbにはアクセスできません。 WebConsoleで覗く方法としては、H2をサーバモードで動かし、アプリケーション側がそのサーバモードで動いているH2に接続する方法があります。 または、リアルタイムではなくなりますが、接続文字列をjdbc:h2:/root/testのようにしてアプリケーションを動作させると/root/test.h2.dbというファイルが出来上がるのでそちらにJDBC接続することでDBの中身を確認することができます。 回答者: Anonymous

履歴やウォッチリストを実装する際、DBにはそれらのデータをどのように保存すれば良いのか

投稿者: Anonymous 通販サイトのカート、動画サイトのウォッチリストや履歴などは、 1ユーザーに対し、複数のデータ(カート内の商品,閲覧したページ)が結びつくかと思いますが、 それらはどのようにDBに保存し、取得すればいいのでしょうか? 配列で保存、と思ったりしましたがよろしくない気がしました(なんとなくですが…) 環境 -MySQL5.6 -Play framework2.3 -Scala2.11 解決 通販サイトに限った話になってしまいますが、こちらでEC-CUBEのER図が公開されています。 日本では有名なECのプラットフォームだと思いますので参考にしてみては如何でしょうか。 ※余計なお世話かもしれませんが、judeファイルはastah* communityで開けます。 また、動画の閲覧履歴のような永続保存しなくてよさそうだったり、ACIDを強く意識する必要のない情報なら、NoSQLを検討してみても良いんじゃないかと思います。 回答者: Anonymous

actorからwebsocketのbroadcastをするには

投稿者: Anonymous playでactorから接続しているクライアントにbroadcastするにはどうしたらよいですか? playでwebsocketを使うときの参考になるサイトがあったらぜひ教えて下さい。 //Global.scala object Global extends GlobalSettings { override def onStart(app: Application) { val system = ActorSystem(“system”) val hello = system.actorOf(Props[HelloActor], “HelloActor”) hello ! “world” } } //HelloActor.scala class HelloActor extends Actor { def receive = { case “world” => helloWorld } def helloWorld = { val (out, channel) = Concurrent.broadcast[String] channel.push(“HelloWorld!!”) }…(Continue Reading)

pass result values of MultipartFormData.FilePart

投稿者: Anonymous fileuploadの実装にあたって、 MultipartFormData.FilePartに格納されている情報をtagとしてmysqlにinsertしたいと考えています。 問題のある箇所は以下の通りです。 (FileUploadController.scala) def upload = silhouette.SecuredAction.async(parse.multipartFormData(handleFilePartAsFile)) { implicit request => val fileOption = request.body.file("picName").map { case FilePart(key, filename, contentType, file) => logger.info(s"key = ${key}, filename = ${filename}, contentType = ${contentType}, file = $file") val data = operateOnTempFile(file) FileUploadFormSupport.picsave(FilePart(key, filename, contentType, file)) data } (FileUploadFormSupport.scala) def picsave() :Unit = { //sql }…(Continue Reading)

仮想環境とフォルダ共有した上での Play Framework 2.0 の自動ビルドについて

投稿者: Anonymous Vagrantfile に config.vm.synced_folder でAPIを仮想環境とホストで共有しています。 仮想環境: VirtualBox + Vagrant API: Play Framework 2.0 + Java 仮想環境で activator run を走らせて、ホストのAPIに変更を加えると自動ビルドが走るようにしたいのですが、うまくいきません。 ホストのAPIをいじる → 仮想環境で自動ビルドする方法についてご教授頂きたいです。 解決 自分も同じ問題で困ったことがありましたが、synced_folderの設定をRsyncにすることで解決しました。 https://docs.vagrantup.com/v2/synced-folders/rsync.html おそらくファイル変更をフックできない事が原因なので、Rsyncでならば問題ないと思います 回答者: Anonymous

Play Framework 2.5 で複数DB接続

投稿者: Anonymous スタックオーバーフローの利用が初めてのものです。 やり取りなどで、ぎこちない部分が多々あるかと思いますが、 どうかよろしくお願いいたします。 仕事でPlay Framework 2.5の利用を検討しております。 公式のドキュメントを見ながら設定を進めておりますが、 複数DB接続の箇所で手詰まりとなっております。 コードはgithubにアップロードしております。 https://github.com/junichimura/play2.5_multiple_database_connection (動作させるためには、事前に公式より、activator最新版をダウンロードしておく必要があります。) もちろんgithubのファイルをダウンロードしたくない方がいらっしゃれば、Web上でコードを開示させていただきます。 また、現在発生しているエラーは以下のようなものです。 [error] application – ! @70c4075ao – Internal server error, for (GET) [/second/set/sample] -> play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[CompletionException: javax.persistence.PersistenceException: The type [class models.second.SampleTable2] is not a registered entity? If you don’t explicitly list the entity classes to use Ebean will search for…(Continue Reading)

Controllerに form helperを使わずにログイン情報を渡す方法

投稿者: Anonymous まず、以下のサイトの通りでログイン認証を実装したのちのご質問になります。 ほぼ丸々同じです。 http://akiomik.hatenablog.jp/entry/2013/02/07/211054 画像アップロードの機能を備えたいと考えているのですが、ドキュメントの通りに書いてしまうと、tmpフォルダに全ての画像が入ってしまう(?)ため、アカウントID(かprimary key)ごとにフォルダを別に分けて保存できないかと思われ、以下のように書いてみました。ですがこのファイルではhelperformからloginNameを取得していないため、当然ながら、 value loginName is not a member of play.api.data.Form[com.github.j5ik2o.spetstore.application.controller.LoginCustomer] の一文がコンパイルエラーとして出てしまいます。(なお引数が足らないとエラーで出てしまうことと、画像をアップロードするview(profpicsupload.scala.html)にもloginNameを渡したいと思ったため、@Inject の後に引数として val loginFormをとりあえず入れてあります) また以前ご回答いただいた際に、クラスではなくシングルトンオブジェクトにすれば、例えば、上記の case class LoginCustomer ( email: string loginName: string password: string ) の情報を form ( val loginForm = Form(…) )をつかったmappingで取得し、 これを例えば以下のメソッド; def toprofpics(loginForm: LoginCustomer): Unit = ProfpicsUploadController.toprofpics(loginForm) で渡せばいいのかもとふと思いましたが、そもそもシングルトンオブジェクトにしてしまうとアクションメソッドを使えなくなってしまうのでどうにもならないと気づきました。これでうまくいくわけがないというのはわかってるのですが、こういう場合(アカウントごとに画像を整理して保存したい場合)どうすべきなのでしょうか。ご回答いただければ幸いです。 package com.github.j5ik2o.spetstore.application.controller import javax.inject._ import play.api._ import play.api.mvc._…(Continue Reading)

EBeanのquery cachingで異なるクエリの結果が返される

投稿者: Anonymous EBean(6.17.3)にて、クエリーキャッシングを行なったとき、 http://ebean-orm.github.io/docs/features/l2caching/ 異なるWHERE句のクエリに対して、キャッシュの値が返される場合があるようです。 いわゆるハッシュ値の衝突が起きているようなのですが、 あまりにも容易に衝突が起きているようなので、回避方法はないでしょうか? サンプルはPostgreSQLですが、特にDBMLには依存しないと思います。 CREATE TABLE test_table ( id bigserial NOT NULL, column_a character varying(10), column_b character varying(10), CONSTRAINT test_table_pkey PRIMARY KEY (id) ) WITH ( OIDS=FALSE ); ALTER TABLE test_table OWNER TO postgres; DBデータは以下です。 id;column_a;column_b 1;”SK08″;”320″ 2;”SK09″;”310″ 3;”SK01″;”201″ 4;”SK11″;”101″ 再現コードは以下です。 Entityの定義 import javax.persistence.*; import com.avaje.ebean.Model; /** * テストテーブル */ @Entity…(Continue Reading)

recursive method play needs result type

投稿者: Anonymous //Count.scala object Count extends Controller{ def play = Action { request => val videoId = request.body.asFormUrlEncoded.get(“videoId”).head val Video = new Video() Video.incrementPlayCount(videoId) Ok(“Success!”) } } これは何が原因でエラーが出ているのですか? 解決 原因は play というメソッド名です。メソッド名を変更すればコンパイルが通るはずです。 以下推測混じりですが詳しく。 Play は conf/routes を元にコード生成を行っていますが、その生成されたコードでコンパイルエラーが起きています。生成されたコードは target/scala-<version>/src_managed ディレクトリにあります。 今回エラーの原因は play というメソッド名にあります。推測ですが、play はパッケージ名などにも使われているため、それと衝突したためにこのエラーが発生しているものと思います。 エラーメッセージが、「再帰メソッド play には戻り値の型が必要です」ですが、生成されたコードを見たところ再帰しておらず、正しいエラーメッセージとは言えないので、それは Scala コンパイラのバグなのかもしれません。 なお、Play 2.4.0-M3 で試したところエラーは発生しませんでした。どの修正かまでは追っていませんが、なんらかの対策がすでに取られたのかもしれません。 回答者: Anonymous

Scala + Play2.0 → Play2.4 SimpleResultについて

投稿者: Anonymous 開発環境 ・OSX EI Capitan 10.11 ・Scala 2.11.7 ・ScalaIDE Build id: 4.2.0-vfinal-2015-09-25T11:10:29Z-Typesafe ・Play 2.4.3 下記サイトを見ながらScala+Playを勉強しているのですが、 Scala+Play 2.0でWebアプリ開発入門(4) http://www.atmarkit.co.jp/ait/articles/1302/21/news016_2.html 下記コードで def sample1 = Action { SimpleResult( header = ResponseHeader(200, Map(CONTENT_TYPE -> “text/html”)), body = Enumerator(views.html.index(“Sample Controller#sample1″)) ) } “not found: value SimpleResult” “type mismatch; found : play.twirl.api.HtmlFormat.Appendable (which expands to) play.twirl.api.Html required: Array[Byte]” 2つエラーが出ます。 “not…(Continue Reading)

【Playframework2.5】JavaAkkaのschedulerが利用できない

投稿者: Anonymous 以下の環境でJavaAkkaを利用した定期処理を実装したいのですが、コンパイルエラーがとれない状況です。 解決法をご存知の方がいらっしゃいましたら手助けしていただけないでしょうか。 ・IDE:eclipse Neon.1a Release (4.6.1) ・java:jdk1.8.0_91 ・コンパイラ:java 1.8 ・フレームワーク:playframework 2.5 package services; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import javax.inject.Inject; import javax.inject.Singleton; import akka.actor.ActorSystem; import play.Logger; import play.inject.ApplicationLifecycle; @Singleton public class MyApplicationGlobal { @Inject public MyApplicationGlobal(final ActorSystem system, ApplicationLifecycle lifecycle) { // サーバ起動時の動作 Logger.info(“———————————– Start application… ——————————“); system.scheduler().schedule( Duration.create(0, TimeUnit.MILLISECONDS), //Initial delay 0 milliseconds…(Continue Reading)

multipartFormDataとAnyContent 両方のrequestを取得したい

投稿者: Anonymous 画像アップロード後遷移する処理なのですが、 Action(parse.multipartFormData) {implicit request => でrequestを取得すると、request[MultipartFormData[files.Temporaryfile]] の型になり、viewに渡す際、 Cannot find any HTTP Request here とエラーが出ます。 multipartFormDataとAnyContent 両方のrequestが取得したいのですが、どのようにすればよいでしょうか? 解決 あっているかはわかりませんが、自己解決しました。 Action{implicit request=> でAnyContent型のリクエストを取得し、その後 var r = AnyContentAsMultipartFormData.apply(request.body.asMultipartFormData.get).mdf MultipartFormDataに変換し、動作を確認しました。 回答者: Anonymous

play 2.3.8(activator)からのjvm-debugについて

投稿者: Anonymous Windows7上でplay 2.3.8とEclipseのScalaIDEの環境で開発しています。 以前はうまく動作していたコマンドが動作しなくなったのですが、原因や調査方法に 心当たりある方がいましたらご教示ください。 事象 activator -jvm-debug 9999 run でプロジェクトが起動できなくなった。 以前だと Listening for transport dt_socket at address: 9999 というメッセージの後に リッスンまで稼働していたと思うのですが、原因不明ですが↑のメッセージで止まってしまい、 それ以上動作しなくなってしまいました。 プロジェクトを新規作成してそちらで同じコマンドを叩いても変わらなかったので、ソースや ライブラリ依存性ではないと思っています。 runで実行するとアプリ自体は稼働しますが、debugでブレークポイントを仕掛けられないので 詳細の確認が難しい状況になっています。 やりたいこととしてはEclipseでのデバッグのステップ操作なので、もし対処法をご存知の方が いましたらよろしくお願いします。 解決 すみません、自己解決できました。 動かなかった原因がactivatorのバージョンが悪かったみたいで、activatorの1.2.2だとjvm-debugがうまく行かないようで、1.3.2に変更したらうまくいくようになりました。 どこかで過去に使っていたバージョンが混ざりこんでバージョンが変わったみたいです。 お騒がせしました。 回答者: Anonymous

activator assembly]でjarファイル化したら、独自定義のmessagesファイルを読み込まなくなった

投稿者: Anonymous マルチポストについてご指摘を受けました。申し訳ございません。 別所にて同質問させて頂いております。 https://groups.google.com/forum/#!topic/play_ja/tVrQFw8Bsm0 お世話になります。 play2.3.8 + scala 2.11.6 + sbtを使用しており、 プロジェクトを「activator assembly」でjarファイル化したのですが、 conf/messages.jaに定義されているメッセージを読み込んでくれません。 初期定義を読み込んでいるようです。 jarファイル化するまでは読み込んでいたのですが、、、 解決 play.api.i18n.Lang を implicit で渡し忘れていることはないでしょうか。 Messages() は play.api.i18n.Lang を implicit で渡さないとシステムデフォルトの言語で翻訳します。 http://qiita.com/kawachi/items/4a0a2342a57849653f38 の「よくある例」になっていないか確認してみてください。 回答者: Anonymous

scala ide + playframework にて view を開くとコンパイルエラー

投稿者: Anonymous 初めて質問させていただきます。 公式のドキュメントを見ながらplayframeworkの開発環境を構築したのですが、 viewを開くとどうしてもコンパイルエラーとなってしまいます。 解決策を知っている人がいましたら、 ご指導いただけると大変助かります。 Scala ide :4.1.1 Playframework :2.4.2 解決 自分の回避方法を挙げておきます。 環境はScala IDE (Build id: 4.2.0-vfinal-2015-09-25T11:10:29Z-Typesafe) htmlソース上で -> 右クリック -> Preferences… General -> Editors -> Structured Text Editors -> 【Appearance】の”Report problems as type” のチェックをOFF あとは Project -> Clean… して終わり 以上 回答者: Anonymous

アップロードした画像の表示の仕方 / [ error ] class MultipartFormData takes type parameters

投稿者: Anonymous アップロードした画像をブラウザに表示したいので、(sihouetteのrequest.identityのように、)MultipartFormDataをviewに渡せば良いのではないかと思ったのですが、うまくいきません。 >class MultipartFormData takes type parameters 問題が起きているのはviewの最初の引数の宣言の部分です。 @(user: models.User, picName: MultipartFormData, fileOption: Option[Long])(implicit request: RequestHeader, messages: Messages, webJarAssets: WebJarAssets) MultipartFormDataの型パラメータがどれに当たるのか、わかりません。そもそもMultipartFormDataを渡すべきなのかもわかりません。 (FileUploadController.scala) type FilePartHandler[A] = FileInfo => Accumulator[ByteString, FilePart[A]] def handleFilePartAsFile: FilePartHandler[File] = { case FileInfo(partName, filename, contentType) => val attr = PosixFilePermissions.asFileAttribute(util.EnumSet.of(OWNER_READ, OWNER_WRITE)) val path: Path = Files.createTempFile(“multipartBody”, “tempFile”, attr) if (Files.notExists(path)) Files.createFile(path)…(Continue Reading)

foreach 文でのコンパイルエラー

投稿者: Anonymous 標題の件についての質問です。 playframework + slick を使っていて、どうしてもコンパイルエラーとなってしまいます。 コメントしてある箇所の Ok(Json.obj(“contracted” -> false)) をいれればコンパイルは通りますが、 Ok(Json.obj(“contracted” -> true)) が適用されずに出力される値が一律 Ok(Json.obj(“contracted” -> false)) となってしまいます。 質問者はjavaについては多少の知識がありますが、 scala、playframework、slickなどは初めての技術です。 質問者の力が未熟で質問の仕方にも問題があるかもしれませんが、 どうかご教授いただけると助かります。 ※追記です:処理の分岐を一度、文字列型で受け取ることでコンパイルエラーを回避することができました。 もしもっと良い方法などがあればご教授お願いします。 ※さらに追記です:この方法だと、sの型が (Option[Byte], Option[Byte])のときにだけ可能でした。 Seq[(Option[Byte], Option[Byte])]の場合にはやはりうまく対応できないようです。 解決 Action.asyncに与えるブロックはFuture[Result]を返さないといけません。 Seq.foreachはUnitを返すため、型がFuture[Unit]になっていると思います。 元のコードからは、どのような時にどのような値をを返したいのか、読み取れませんが… repo.getRoomStatus(roomNumber, client_id).map { case Seq() => Ok(Json.obj(“contracted” -> false)) case _ => Ok(Json.obj(“contracted” -> true)) } とか repo.getRoomStatus(roomNumber, client_id).map {…(Continue Reading)

Playframework2.4 の Form で list(number) をバインドした時のフィールドコンストラクタ挙動で、value 値が取得できない。

投稿者: Anonymous 環境 : – Playframework 2.4.2 実現したい事: マルチセレクトのチェックボックスを、Play 標準の helper のように定義したい。 動作仕様として下記のように使いたい @myhelper.multipleCheckBox(c(“multiSelect”), Map(“first” -> “1”, “second” -> “2”, “third” -> “3”)) 作成したコード: (field: play.api.data.Field, keyValues: Map[String, String])(implicit messages: play.api.i18n.Messages) @helper.input(field) { (id, name, value, htmlArgs) => @{value.toString} @{value.getClass.toString} @defining(keyValues.toList.zipWithIndex){ results => @for(kv_i <- results){ <label class=”checkbox-inline”> <input id=”@{id}[email protected]{kv_i._2}” name=”@{name}[@{kv_i._2}]” type=”checkbox” value=”@{kv_i._1._2}” @if(value.exists(v =>…(Continue Reading)

Scala バッチ処理で定期的にDB(MySQL)のデータを確認したい

投稿者: Anonymous こんにちは! Scalaでバッチ処理を実装したいのですが、 用途としてはDBに保存されているデータの日付型を確認し、現在時間がその日付を超えたらある処理を行う、のようにしたいです。 あるいはサーバー側でそのような処理が行えるのなら、それも知りたいです。 Play Framework 2.3.x Scala 2.11.6 解決 事故解決 onStartで実行時にスケジューラを起動 object Global extends GlobalSettings { override def onStart(app: Application) { Logger.info(“Application has started for ” + app.mode + ” mode.”) val scheduler = QuartzSchedulerExtension(Akka.system) scheduler.schedules.foreach { case (key, setting) => scheduler.schedule( setting.name, ${setting.name}”))), setting.description.getOrElse(setting.name) ) } } 参考: http://qiita.com/rynkjm/items/ba356459f8da1d3e0ddf http://tech.aainc.co.jp/archives/9620 回答者:…(Continue Reading)

play2.3.xでコントローラから公開アセットを出力する方法

投稿者: Anonymous public class Application extends Controller { public static play.mvc.Result index() { return ok(controllers.Assets.at(“/public”, “index.html”, true)); } } 上記のように/public/index.htmlをレスポンスとしたいのですが、controllers.Assets.atの戻り値はplay.api.mvc.Action<play.api.mvc.AnyContent>なので型不一致でコンパイルエラーとなります。 どうすればコントローラから公開アセットを返せるでしょうか? 解決 play 2.2.0ではありますが、以下のコードで実現できました(が非常に煩雑です)。 public class Application extends Controller { public static Result index() throws Throwable { play.api.Application app = Play.application().getWrappedApplication(); scala.Option<URL> option = play.api.Play.resource(“public/stylesheets/main.css”, app); String content = org.apache.commons.io.IOUtils.toString(option.get()); return ok(content); } } controllers.Assets.atの戻り値はActionであるため、コントローラ内で使用するにはあまり適切でなさそうです。ここではatメソッドの中身を参考に実装しています。…(Continue Reading)

swiftでprotocolが入ったframeworkを作りたい

投稿者: Anonymous お世話になります タイトルの通り、swiftでprotocolの入ったframeworkを作りたいと考えております が、現在詰まっておりまして、framework自体はできたのですが、protocolがheaderファイルに見えてない状態でして、実質使えないという状態になって困っております // // ConnectionBySession.swift // ShotAlertForSwift // // Created by 平塚 俊輔 on 2015/04/07. // Copyright (c) 2015年 平塚 俊輔. All rights reserved. // protocol ConnectionResultBySession{ func showResult(resultMessage: String?) -> Void func handleErrorForConnection() } public class ConnectionBySession : NSObject,NSURLSessionDataDelegate{ // 参考: // NSURLConnection ttp://stackoverflow.com/questions/24176362/ios-swift-and-nsurlconnection // Delegate, Protocol ttp://qiita.com/mochizukikotaro/items/a5bc60d92aa2d6fe52ca // nilが入ってるなんてあり得ない! var urlStr…(Continue Reading)

ProvisionException: Unable to provision / Error injecting constructor, java.lang.NullPointerException

投稿者: Anonymous scalikeJDBCを使ってformからmysql(docker上にあるdbなのでmariaDB)にinsertしたいのですが、以下のようなエラーが出てしまいます。 Unexpected exception ProvisionException: Unable to provision, see the following errors: 1) Error injecting constructor, java.lang.NullPointerException at controllers.SignupCustomerJson.<init>(SignupControllerSupport.scala:61) while locating controllers.SignupCustomerJson for the 3rd parameter of controllers.SignupController.<init> (SignupController.scala:29) while locating controllers.SignupController for the 4th parameter of router.Routes.<init>(Routes.scala:55) while locating router.Routes while locating play.api.inject.RoutesProvider while locating play.api.routing.Router for the 1st parameter of play.api.http.JavaCompatibleHttpRequestHandler.<init>(HttpRequestHandler.scala:201) while…(Continue Reading)

Playframework2.2でリクエストのプロトコルを取得したい

投稿者: Anonymous Playframework2.2のリクエスト処理の経路はGlobalSettingsのonRouteRequestを経由した後にActionに処理されると思います。そこで、onRouteRequestを使ってアクセス元のプロトコルを取得したいですが、どのようにすればいいでしょうか? trait Global extends GlobalSettings { override def onRouteRequest(request: RequestHeader): Option[Handler] = { // val p = request // get protocol something(p) } } 解決 play 2.3.0 以降だと secure というメソッドがあるのですが、2.2系だと存在しないので、そのメソッドが入った以下のコミット https://github.com/playframework/playframework/commit/10d6e5a1490c674f を参考に、ある程度面倒な方法で頑張るしかないかもしれません? 回答者: Anonymous

(Symbol, Any)* と (Symbol, Any)* のマージ

投稿者: Anonymous play framework(2.4)のScalaテンプレートとして、 カスタムinputヘルパを作成したいと考えています。 カスタムinputヘルパでは、固定のattribute(styleやclass)を付けたいのですが、 カスタムinputヘルパを呼び出す側でもattributeを付けたい場合があります。 そこで、カスタムinputヘルパに渡される(Symbol, Any)* と カスタムinputヘルパ内で設定したい (Symbol, Any)* をマージできれば良いのではないかと考えました。 ふたつの同じSymbolがあればvalueを文字列として結合するイメージです。 @(field: play.api.data.Field, args: (Symbol,Any)*)(implicit handler: helper.FieldConstructor) @{ ここでargsと ‘style -> “aaa”, ‘class -> “bbb” をマージするイメージ }@ @helper.input(field, args:_*) { (id, name, value, htmlArgs) => <input type=”text” id=”@id” name=”@id” value=”@value” @toHtmlArgs(htmlArgs) /> } どのような方法で実現できるでしょうか。 (template functionとして切り出したいと考えています). 解決 解決方法 別途、マージ処理用のScalaソースコードを用意する。(ViewUtility.scala) package hoge.piyo.scala…(Continue Reading)

【Playframework2.5】Server-Sent Eventsを使用して、イベント駆動な画面同期を行いたい

投稿者: Anonymous Webシステムにおいて、同じ画面を複数ユーザーが表示・操作している状態で画面を同期化したいと考えています。 ○期待している動作 ユーザが画面を操作>AjaxでDBを更新>更新内容を、同じ画面を開いている別ユーザの画面にも反映 ○現状 play.libs.EventSourceのリファレンスに乗っているサンプルコードを実装し、一定時間ごとにサーバからクライアントへデータを送信できることを確認しました。 ・javascript $(function() { /************************************************************************** * * 同期処理用SSE * **************************************************************************/ var eventSource = new EventSource(“/xxx/sse/test”); eventSource.onmessage = function (event) { alert(event.data); }; }); ・サーバ側 public Result testSSE() { Source<String, ?> tickSource = Source.tick(Duration.Zero(), Duration.create(10000, TimeUnit.MILLISECONDS), “TICK”); Source<EventSource.Event, ?> eventSource = tickSource.map((tick) -> EventSource.Event.event(df.format(ZonedDateTime.now()))); return ok().chunked(eventSource.via(EventSource.flow())).as(Http.MimeTypes.EVENT_STREAM); } ○疑問 このサンプルを参考に、「一定時間ごと」ではなく「DB更新処理が完了する毎」にフラグを変更したいのですが、方法がわからずに頓挫している状態です。 ご存知の方がいらっしゃいましたらご協力をお願いします・・・。…(Continue Reading)

PlayFrameworkでModelからセッション情報を取得する方法はありますか?

投稿者: Anonymous PlayFramework 2.2 with Javaを使ってアプリを作っています。 Modelの保存時に、追跡情報としてcreate_user_id/update_user_idを保存したいのですが、 PlayFrameworkのModelからセッション情報を取り出せません。 現在は、保存時にControllerから毎回セッションから取り出したUserのエンティティを渡しているのですが、ひどい実装なので、 Model.save()メソッドを呼び出したときに、Model側でセッションからログインユーザーを取得して 保存してくれるような実装にしたいです。 何か、ベストプラクティスをご存知の方がいらっしゃいましたらご教授頂けませんか。 public abstract class AbstractTrailModel extends Model { public static final int INSERT = 1; public static final int UPDATE = 2; public static final int DELETE = 3; @ManyToOne(cascade = CascadeType.ALL) @Constraints.Required public User createUser; @ManyToOne(cascade = CascadeType.ALL) @Constraints.Required public User createUser; @Constraints.Required…(Continue Reading)

Play2 Scalaで認証機能の主流は?

投稿者: Anonymous playframework 2.x でのrailsのdeviseのような主流なものは何ですか? 解決 SecureSocial 最も有名で非常に高機能です。 認可の機能は限定的です。 ただし、Play2.3 に対応した stable 版がまだリリースされていません。 play2-auth 認証と認可の両方の機能を持ったシンプルなライブラリです。 devise ほど高機能ではありません。 Deadbolt 2 認証機能のライブラリです。 Java用のライブラリでしたが現在ではScalaからも利用が可能になっています。 有名どころはこの3つでしょうか 回答者: Anonymous

Cannot resolve symbol ‘play’のコンパイルエラーを解決したい

投稿者: Anonymous Javaでplayframeworkの勉強をしています。IDEはIntelliJを使っています。 質問なのですが、結論から言うと、Cannot resolve symbol ‘play’のコンパイルエラーを解決したいです。 現在Controllerクラスのimport play.mvc.*;の「play」でコンパイルエラーが出ています。 インポートしてビルドするとこのようになったので、設定を調べているのですが、解決に至っていないので質問させていただきました。 まず環境は以下です。plyaframeworkとIntellJ初心者のため、バージョンの確認方法から躓いています。。 環境 MacOS High Sierra 10.13.6 jdk-14.0.1 IntellijJ IDEA 2020.1.2(community無償版) (prayframeworkのバージョン確認方法が確信が持てず。。) version := “1.0-SNAPSHOT” scalaVersion := “2.13.2”(built.sbtより) activator-launch-1.3.5.jar このページを参考にプログラムを作っています。 https://furiblog.com/programming-java-play-setup 以下のようにIntelliJにインポートするとControllerクラスでコンパイルエラーが起きており、playやControllerなどがエラーになっています。 localhost:9000につなぐと実行できて表示できるのですが、このコンパイルエラーが気持ち悪いです。 もしわかる方がいれば教えていただけないでしょうか? 解決 .ideaディレクトリを削除し、ビルドし直すとコンパイルエラーが解消されました。プロジェクト固有情報やライブラリ情報が入っているディレクトリになります。 詳しくは左下のBuildタブから前回のビルドを選択し、Reloadをしました。 回答者: Anonymous

optional(text.verifying(“エラーメッセージ”))からエラーメッセージを取得できない

投稿者: Anonymous 現在scalaでフォーム画面からポストされるデータのバリデーション機能を実装しています。 Formの定義を以下のようにしています。 optional(text.verifying(“姓をを入力してください”, lastName => !lastName.isEmpty())) 入力されない場合、エラーメッセージを取得して画面に表示したいのですが、どうやって取得するのでしょうか? 解決 Play Framework2.x系のご質問であってますでしょうか? また、入力エラーにならない、というご質問でしょうか? それともview側でどうやってメッセージを取得すればよいか、というご質問でしょうか? Play2で前者という仮定で回答しますと optional() を使うのを止めるのがよいと思います。 また、必須な文字列項目であれば nonEmptyText という mapping が定義されているので、 nonEmptyText を使うと良いと思います。 「姓を入力してください」 というエラー文言については、conf/messages でコントロールする方がお勧めです。 回答者: Anonymous