hakandilek / play2-crud Goto Github PK
View Code? Open in Web Editor NEWSimple CRUD & DAO implementation for play2
License: Other
Simple CRUD & DAO implementation for play2
License: Other
Using Play 2.1.1, have followed the 'simple' instructions but get the following error when loading the application.
Also, attempting to go directly to the /app URL gives an NPE:
play.api.Application$$anon$1: Execution exception[[NullPointerException: null]]
at play.api.Application$class.handleError(Application.scala:287) ~[play_2.10-2.1.5.jar:2.1.5]
at play.api.DefaultApplication.handleError(Application.scala:381) [play_2.10-2.1.5.jar:2.1.5]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$play$core$server$netty$PlayDefaultUpstreamHandler$$handle$1$1.apply(PlayDefaultUpstreamHandler.scala:143) [play_2.10-2.1.5.jar:2.1.5]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$play$core$server$netty$PlayDefaultUpstreamHandler$$handle$1$1.apply(PlayDefaultUpstreamHandler.scala:139) [play_2.10-2.1.5.jar:2.1.5]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10-2.1.5.jar:2.1.5]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10-2.1.5.jar:2.1.5]
java.lang.NullPointerException: null
at play.utils.crud.GlobalCRUDSettings.getControllerInstance(GlobalCRUDSettings.java:12) ~[play2-crud_2.10-0.7.0.jar:0.7.0]
at play.core.j.JavaGlobalSettingsAdapter.getControllerInstance(JavaGlobalSettingsAdapter.scala:45) ~[play_2.10-2.1.5.jar:2.1.5]
at play.crud.Routes$$anonfun$routes$1$$anonfun$applyOrElse$1$$anonfun$apply$1.apply(routes_routing.scala:73) ~[play2-crud_2.10-0.7.0.jar:0.7.0]
at play.crud.Routes$$anonfun$routes$1$$anonfun$applyOrElse$1$$anonfun$apply$1.apply(routes_routing.scala:73) ~[play2-crud_2.10-0.7.0.jar:0.7.0]
at play.core.Router$HandlerInvoker$$anon$6$$anon$2.invocation(Router.scala:193) ~[play_2.10-2.1.5.jar:2.1.5]
at play.core.Router$Routes$$anon$1.invocation(Router.scala:373) ~[play_2.10-2.1.5.jar:2.1.5]
Hi there,
Just trying out your app, most things work well but whenever I try to display a list I get an NPE:
play.api.Application$$anon$1: Execution exception[[NullPointerException: null]]
at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.1]
at play.api.DefaultApplication.handleError(Application.scala:383) [play_2.10.jar:2.1.1]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:144) [play_2.10.jar:2.1.1]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:140) [play_2.10.jar:2.1.1]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.1]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.1]
java.lang.NullPointerException: null
at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:191) ~[spring-core.jar:3.1.2.RELEASE]
at play.utils.crud.DynamicTemplateController.call(DynamicTemplateController.java:68) ~[play2-crud_2.10-0.4.0-SNAPSHOT.jar:0.4.0-SNAPSHOT]
at play.utils.crud.DynamicTemplateController.ok(DynamicTemplateController.java:21) ~[play2-crud_2.10-0.4.0-SNAPSHOT.jar:0.4.0-SNAPSHOT]
at play.utils.crud.CRUDController.list(CRUDController.java:46) ~[play2-crud_2.10-0.4.0-SNAPSHOT.jar:0.4.0-SNAPSHOT]
at controllers.Application.tagList(Application.java:39) ~[na:na]
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$7$$anonfun$apply$7.apply(routes_routing.scala:141) ~[na:na]
Play team moved template system to new project play.twirl.api.
So we need few changes:
import play.mvc.Content -> import play.twirl.api.Content
import play.api.templates.Html -> import play.twirl.api.Html
http://www.playframework.com/documentation/2.3.x/Migration23
Unfortunetly more need to be fixed. When I change imports, compiler crashes on the wrong number of parameters in Assets (return controllers.Assets.at(path, file);)
! @6gaakbed0 - Internal server error, for (GET) [/app/Interest/Action(parser=BodyParser(anyContent))] ->
play.api.Application$$anon$1: Execution exception[[NumberFormatException: For input string: "Action(parser=BodyParser(anyContent))"]]
at play.api.Application$class.handleError(Application.scala:287) ~[play_2.10-2.1.5.jar:2.1.5]
at play.api.DefaultApplication.handleError(Application.scala:381) [play_2.10-2.1.5.jar:2.1.5]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$play$core$server$netty$PlayDefaultUpstreamHandler$$handle$1$1.apply(PlayDefaultUpstreamHandler.scala:143) [play_2.10-2.1.5.jar:2.1.5]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$play$core$server$netty$PlayDefaultUpstreamHandler$$handle$1$1.apply(PlayDefaultUpstreamHandler.scala:139) [play_2.10-2.1.5.jar:2.1.5]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10-2.1.5.jar:2.1.5]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10-2.1.5.jar:2.1.5]
java.lang.NumberFormatException: For input string: "Action(parser=BodyParser(anyContent))"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.7.0_45]
at java.lang.Long.parseLong(Long.java:441) ~[na:1.7.0_45]
at java.lang.Long.valueOf(Long.java:540) ~[na:1.7.0_45]
at play.utils.meta.convert.LongConverter.convert(LongConverter.java:12) ~[play2-crud_2.10-0.7.2-SNAPSHOT.jar:0.7.2-SNAPSHOT]
at play.utils.meta.convert.LongConverter.convert(LongConverter.java:4) ~[play2-crud_2.10-0.7.2-SNAPSHOT.jar:0.7.2-SNAPSHOT]
at play.utils.crud.ControllerProxy.show(ControllerProxy.java:30) ~[play2-crud_2.10-0.7.2-SNAPSHOT.jar:0.7.2-SNAPSHOT]
[debug] p.u.c.RouterController - show <- Interest, Action(parser=BodyParser(anyContent))
[debug] p.u.m.c.ClasspathScanningControllerRegistry - getCrudController <- key: class java.lang.Long model: class models.Interest
[debug] p.u.m.c.ClasspathScanningControllerRegistry - controller : null
I would like to use this project with Play 2.3.x, but it this project maintained at all now?
How to get the lastest version in my build.sbt?
Thanks a lot for such a nice template for CRUD operations play2_crud. It worked fine with the activator. But when I am trying to integrate with the latest version of play (2.5.4) and scala (2.11.7) and I am facing a problem.
I get the following error.
[info] Resolving play2-crud#play2-crud_2.11;0.7.4-SNAPSHOT ...
[warn] Unable to reparse play2-crud#play2-crud_2.11;0.7.4-SNAPSHOT from snapshot repository, using Fri Oct 23 01:36:15 IST 2015
[warn] Choosing snapshot repository for play2-crud#play2-crud_2.11;0.7.4-SNAPSHOT
My build.sbt looks like this
name := """my-second-app"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayJava,PlayEbean)
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs, javaJdbc,
"play2-crud" %% "play2-crud" % "0.7.4-SNAPSHOT",
"play2-crud" %% "play2-crud" % "0.7.4-SNAPSHOT" classifier "assets"
)
resolvers += "release repository" at "http://hakandilek.github.com/maven-repo/releases/"
resolvers += "snapshot repository" at "http://hakandilek.github.com/maven-repo/snapshots/"
Can you please suggest how can I fix this. Thanks for your help.
I just downloaded the zip and ran it using -
activator run
Keep seeing the following error -
sbt.ResolveException: unresolved dependency: play2-crud#play2-crud_2.11;0.7.4-SNAPSHOT: not found
This is my build.sbt -
name := "play2-crud-activator"
version := "0.7.4-SNAPSHOT"
scalaVersion := "2.11.1"
libraryDependencies ++= Seq(
javaCore, javaJdbc, javaEbean,
"play2-crud" %% "play2-crud" % "0.7.4-SNAPSHOT",
"play2-crud" %% "play2-crud" % "0.7.4-SNAPSHOT" classifier "assets"
)
lazy val root = (project in file(".")).enablePlugins(PlayJava)
resolvers += "release repository" at "http://hakandilek.github.com/maven-repo/releases/"
resolvers += "snapshot repository" at "http://hakandilek.github.com/maven-repo/snapshots/"
Very new to this so please help.
Should I be able to use the REST API to create a new Simple object without specifying the ID for the new Simple object created?
Running a command like this using the current source produces a NumberFormatException when trying to convert a non-existent id field of type Long from null:
$ curl -X POST -H "Content-type: application/json" -d '{"name": "new simple object"}' http://localhost:9000/api/Simple/create
Am I just missing something?
Hi there,
This is from using the samples (except I've changed the entity name from Sampel to Tag). After updating an existing Tag entity, I get the following exception (I'm using the in-memory datastore that comes with Play):
play.api.Application$$anon$1: Execution exception[[OptimisticLockException: Data has changed. updated [0] rows sql[update tag set name=? where id=?] bind[null]]]
at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.1]
at play.api.DefaultApplication.handleError(Application.scala:383) [play_2.10.jar:2.1.1]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:144) [play_2.10.jar:2.1.1]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:140) [play_2.10.jar:2.1.1]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.1]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.1]
javax.persistence.OptimisticLockException: Data has changed. updated [0] rows sql[update tag set name=? where id=?] bind[null]
at com.avaje.ebeaninternal.server.persist.dml.DmlHandler.checkRowCount(DmlHandler.java:103) ~[avaje-ebeanorm-server.jar:na]
at com.avaje.ebeaninternal.server.persist.dml.UpdateHandler.execute(UpdateHandler.java:88) ~[avaje-ebeanorm-server.jar:na]
at com.avaje.ebeaninternal.server.persist.dml.DmlBeanPersister.execute(DmlBeanPersister.java:86) ~[avaje-ebeanorm-server.jar:na]
at com.avaje.ebeaninternal.server.persist.dml.DmlBeanPersister.update(DmlBeanPersister.java:66) ~[avaje-ebeanorm-server.jar:na]
at com.avaje.ebeaninternal.server.persist.DefaultPersistExecute.executeUpdateBean(DefaultPersistExecute.java:91) ~[avaje-ebeanorm-server.jar:na]
at com.avaje.ebeaninternal.server.core.PersistRequestBean.executeNow(PersistRequestBean.java:485) ~[avaje-ebeanorm-server.jar:na]
What are all the custom-pages names? I know of
{Model}List.scala.html
{Model}Form.scala.html
from the example but what are the others?
MatchError: java.lang.UnsupportedClassVersionError: play/utils/dao/BasicDAO : Unsupported major.minor version 51.0 (of class java.lang.UnsupportedClassVersionError)
I am trying to define a custom REST controller as per custom-rest-controllers.md. It compiles and runs the list method correctly, but then it gets an exception, seemingly to do with dynamic controller routes, although the routes are not defined with '@'. Here is the error and stack trace:
com.google.inject.ConfigurationException: Guice configuration errors:
1 error
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java
:1004)
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java
:961)
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java
:1013)
at play.utils.inject.InjectAdapter.getInstance(InjectAdapter.java:34)
at play.utils.crud.CRUDManager.getController(CRUDManager.java:59)
at play.utils.crud.GlobalCRUDSettings.getControllerInstance(GlobalCRUDSe
ttings.java:12)
at play.utils.meta.cp.ClasspathScanningControllerRegistry.scanRest(Class
pathScanningControllerRegistry.java:116)
at play.utils.meta.cp.ClasspathScanningControllerRegistry.(Classpa
thScanningControllerRegistry.java:45)
at play.utils.crud.CRUDManager.initialize(CRUDManager.java:45)
at play.utils.crud.GlobalCRUDSettings.onStart(GlobalCRUDSettings.java:23
)
at play.core.j.JavaGlobalSettingsAdapter.onStart(JavaGlobalSettingsAdapt
er.scala:18)
at play.api.GlobalPlugin.onStart(GlobalSettings.scala:203)
at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.sca
la:88)
at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.sca
la:88)
at scala.collection.immutable.List.foreach(List.scala:318)
at play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:88)
at play.api.Play$$anonfun$start$1.apply(Play.scala:88)
at play.api.Play$$anonfun$start$1.apply(Play.scala:88)
at play.utils.Threads$.withContextClassLoader(Threads.scala:18)
at play.api.Play$.start(Play.scala:87)
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anon
fun$1.apply(ApplicationProvider.scala:139)
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anon
fun$1.apply(ApplicationProvider.scala:112)
at scala.Option.map(Option.scala:145)
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply
(ApplicationProvider.scala:112)
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply
(ApplicationProvider.scala:110)
at scala.util.Success.flatMap(Try.scala:200)
at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvi
der.scala:110)
at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvi
der.scala:102)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(
Future.scala:24)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.sca
la:24)
at scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(For
kJoinTask.java:1361)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool
.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:19
79)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThre
ad.java:107)
[info] play - Application started (Dev)
I am trying to add play2-crud to my project. However, I am getting "(*:update) Conflicting cross-version suffixes in: org.scala-stm:scala-stm" error.
I am using Play 2.2.1. Below is my build.sbt content:
name := "myApp"
version := "1.0-SNAPSHOT"
libraryDependencies ++= Seq(
javaJdbc,
javaEbean,
cache
)
libraryDependencies += "play2-crud" % "play2-crud_2.10" % "0.7.0"
resolvers += "release repository" at "http://hakandilek.github.com/maven-repo/releases/"
resolvers += "snapshot repository" at "http://hakandilek.github.com/maven-repo/snapshots/"
play.Project.playJavaSettings
ebeanEnabled := true
compile in Test <<= PostCompile(Test)
And I added
"resolvers += "njin github repository (snapshots)" at "http://njin-fr.github.com/repository/snapshots""
to my plugin.sbt.
Is this a known issue? I googled the whole day with no result.
The Twitter Bootstrap style form UI shown in the demo/wiki is not being applied.
e upgraded to Bootstrap 3.0.3 and the styling of the navigation header breaks for the play2-crud pages.
We had similar problems with our navigation and so we swapped to the following nav structure as Twitter Bootstrap 3 recommends:
http://getbootstrap.com/examples/starter-template/ (View the source)
You probably also want to look at: http://getbootstrap.com/getting-started/#migration
implement an listener interface following observer design pattern. Listeners will implement before_() and after_() operations for DAO C_UD (CRUD) operations.
# REST API
-> /api play.crud.rest.Routes
make DAO.find()
methods protected
in order to prevent Controller access.
Introduce a DAOListenerAdapter for easy DAOListener definition
Hi there,
Upgraded to Play 2.2.2 after seeing support go in for this plugin :-). Unfortunately I have the following error though:
ERROR] [03/07/2014 16:47:14.512] [play-akka.actor.default-dispatcher-9] [ActorSystem(play)] Uncaught error from thread [play-akka.actor.default-dispatcher-9] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled
java.lang.NoSuchMethodError: play.templates.TemplateMagic$.richString(Ljava/lang/String;)Lplay/templates/TemplateMagic$RichString;
at play.utils.crud.views.html.template.menu$$anonfun$apply$2.apply(menu.template.scala:46)
at play.utils.crud.views.html.template.menu$$anonfun$apply$2.apply(menu.template.scala:45)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.AbstractTraversable.map(Traversable.scala:105)
at play.utils.crud.views.html.template.menu$.apply(menu.template.scala:45)
at play.utils.crud.views.html.template.layout$.apply(layout.template.scala:50)
at play.utils.crud.views.html.index$.apply(index.template.scala:33)
at play.utils.crud.views.html.index$.render(index.template.scala:61)
at play.utils.crud.views.html.index.render(index.template.scala)
at play.utils.crud.RouterCrudController.index(RouterCrudController.java:68)
at play.crud.Routes$$anonfun$routes$1$$anonfun$applyOrElse$1$$anonfun$apply$1.apply(routes_routing.scala:77)
at play.crud.Routes$$anonfun$routes$1$$anonfun$applyOrElse$1$$anonfun$apply$1.apply(routes_routing.scala:77)
at play.core.Router$HandlerInvoker$$anon$7$$anon$2.invocation(Router.scala:183)
at play.core.Router$Routes$$anon$1.invocation(Router.scala:377)
at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:56)
at play.GlobalSettings$1.call(GlobalSettings.java:64)
at play.core.j.JavaAction$$anon$3.apply(JavaAction.scala:91)
at play.core.j.JavaAction$$anon$3.apply(JavaAction.scala:90)
at play.core.j.FPromiseHelper$$anonfun$flatMap$1.apply(FPromiseHelper.scala:82)
at play.core.j.FPromiseHelper$$anonfun$flatMap$1.apply(FPromiseHelper.scala:82)
at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:251)
at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:249)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
at play.core.j.HttpExecutionContext$$anon$2.run(HttpExecutionContext.scala:37)
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:42)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
at play.core.j.JavaAction$$anon$3.apply(JavaAction.scala:90)
at play.core.j.FPromiseHelper$$anonfun$flatMap$1.apply(FPromiseHelper.scala:82)
at play.core.j.FPromiseHelper$$anonfun$flatMap$1.apply(FPromiseHelper.scala:82)
at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:251)
at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:249)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
at play.core.j.HttpExecutionContext$$anon$2.run(HttpExecutionContext.scala:37)
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:42)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
play2-cache project will be merged into play2-crud.
Classloading in dev mode seem to cause problems similar to playframework/playframework#822 and showing following error: java.lang.NoSuchFieldError: Application
Hi there,
I'm trying out play2-crud. So far I've run the examples in /samples/ and no problem, they work fine. However, when I compile the project in /project-code/ I get the following errors:
[info] Compiling 17 Scala sources and 58 Java sources to /Users/jaro/play/play2-crud/project-code/target/scala-2.10/classes...
[error] /Users/jaro/play/play2-crud/project-code/app/play/utils/crud/views/edit.scala.html:13: value RouterCrudController is not a member of object play.utils.crud.routes
[error] @Form(if(key != null) { play.utils.crud.routes.RouterCrudController.update(model.getName, key + "") }
[error] ^
[error] /Users/jaro/play/play2-crud/project-code/app/play/utils/crud/views/index.scala.html:23: value RouterCrudController is not a member of object play.utils.crud.routes
[error] @Messages(item)
[error] ^
[error] /Users/jaro/play/play2-crud/project-code/app/play/utils/crud/views/list.scala.html:16: value RouterCrudController is not a member of object play.utils.crud.routes
[error]
I come from Java and am quite new in Play. I think I'm missing something in my configuration to make it work. Would you spread some light? Thanks
I'm using: play 2.2.2 built with Scala 2.10.3, JDK 7
Cheers
Enhance documentation with a chapter about DAOListeners
Not able to run your app, its throwing error while compiling. I am typing below command.
C:\play-2.2.0\play2-crud-master\project-code>play run
After doing the steps on the first instruction page, should I be able to update things in a database, or do I have to implement something else as well? I can see all of the data in the database, but when I try to update something I get this error:
[NullPointerException: null]
From the bottom up:
m8 crashes, apparently confused where to look for sampleForm.scala.html. It exists in the app but play-crud perhaps is looking in twixt (since that's where the class that derived from CRUDController is.
java.lang.NoClassDefFoundError: views/html/SampleForm (wrong name: views/html/sa
mpleForm)
java.lang.NoClassDefFoundError: views/html/SampleForm (wrong name: views/html/sa
mpleForm)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:455)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:455)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:367)
at java.net.URLClassLoader$1.run(URLClassLoader.java:367)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at play.utils.crud.TemplateController.call(TemplateController.java:83)
at play.utils.crud.TemplateController.call(TemplateController.java:83)
at play.utils.dyn.DynamicCrudController.render(DynamicCrudController.jav
a:75)
at play.utils.dyn.DynamicCrudController.render(DynamicCrudController.jav
a:75)
NOTE. If I copy TwixtController up into the m8 app and derive SampleController from it, everything works fine.
When trying to create your own SimpleForm, when using the edit function you will get an [IllegalArgumentException: argument type mismatch] error. The new object function works.
The error-log
! @6i79kh26i - Internal server error, for (GET) [/app/Voeding/1/edit] ->
play.api.Application$$anon$1: Execution exception[[IllegalArgumentException: argument type mismatch]]
at play.api.Application$class.handleError(Application.scala:293) ~[na:na]
at play.api.DefaultApplication.handleError(Application.scala:399) [na:na]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$2$$anonfun$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:261) [na:na]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$2$$anonfun$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:261) [na:na]
at scala.Option.map(Option.scala:145) [na:na]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$2.applyOrElse(PlayDefaultUpstreamHandler.scala:261) [na:na]
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_05]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_05]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_05]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_05]
at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:191) ~[na:na]
at play.utils.crud.TemplateController.call(TemplateController.java:97) ~[na:na]
Change sample and HOW-TO according to play 2.1 dependency injection
After compiled when I call http://localhost:9000 is showed this error: play/utils/crud/GlobalCRUDSettings : Unsupported major.minor version 51.0
I tried to add this row in build.sbt:
javacOptions ++= Seq("-source", "1.6", "-target", "1.6")
but it didn't work. How can I solve this problem?
Thanks in advance.
Hi,
I had a GlobalSettings class which worked fine when I began my project. I then moved to play2-crud and it is not working anymore.
My Global class is in the app/ folder. My code :
import play.Logger;
import play.utils.crud.GlobalCRUDSettings;
public class Global extends GlobalCRUDSettings {
@Override
public void onStart(Application app) {
super.onStart(app);
Logger.debug("###app begin");
}
}
When I relaunch the application, type the command run and refresh my page, the log comment is not appearing. If I test it in the sample crud activator application, the same problem.
Why ?
Sample implementation for DAOListeners
When I call to the address : http://localhost:9000/app/User/3/edit
I get an error about wrong parameter type for method execution.
The exeception has been send from the line 97 of TemplateController.java (in the call method) :
result = ReflectionUtils.invokeMethod(method, null, paramValues);
This is probably a problem of cast of the string in the url to the generic type K of the CRUDController. RouterController.editForm(String name, String key) is call in the route and its argument key is cast implicitly to the type K while relay to ControllerProxyCRUD.editForm(key).
This is not throwing any exception at this moment, but it seems like a lack of correct cast come to fame while used in the TemplateController.call function.
The strange thing is that, if I type the url http://localhost:9000/app/User/3/delete, the deletion work fine while the same cast procedure (ie: no procedure) is processed.
!!!Warning: ugly code!!!
I have a class User which inherit a class MyCrudController<Long, User> which extend CRUDController<Long, User>.
The idea is to render the form independently of the crudPlay plugin, so that I can have my own cast engine (which is very ugly):
new Long(key.toString())
This few words solve the entire problem !
User.java
public class UserCtr extends MyCrudController<Long, User>
{
@Inject
public UserCtr(models.User.Dao dao)
{
super(dao, Long.class, User.class);
}
private static CrudForm<User> form = null;
public static FormOptions<User> getFormOptions(Long _id, Form<User> _form)
{
if (form == null)
{
form = new CrudForm<User>(User.class, "UserCtr.createTitle", "UserCtr.createTitle");
}
User logUser = Login.getLogUser();
return form.getOptions(_id, logUser, _form);
}
[...]
}
MyCrudController.java
/**
* The K generic type must be of type Long.
* Stating it statically in the definition of the class (ie: extends CRUDController<Long, M>)
* is throwing exception.
*/
@With(misc.LoginAction.class)
public abstract class MyCrudController<K, M extends BasicModel<K>> extends CRUDController<K, M>
{
//This fields are private in the CRUDController, so I redefine them
protected String className;
protected Class<M> myModelClass;
protected Class<K> myKeyClass;
private final DAO<K, M> myDao;
@Inject
public MyCrudController(DAO<K, M> dao, Class<K> keyClass, Class<M> modelClass)
{
super(dao, Form.form(modelClass), keyClass,
modelClass, 10, "id" + modelClass.getSimpleName());
className = modelClass.getSimpleName();
myModelClass = modelClass;
myKeyClass = keyClass;
myDao = dao;
}
@Override
protected Call toIndex()
{
return controllers.routes.Application.index();
}
@Override
public Result editForm(K key)
{
Form<M> sendForm = Form.form(myModelClass);
M toUpdate = myDao.get(key);
if (toUpdate == null){
String msg = "Can't found with id : " + key;
play.Logger.error(msg);
ListInfo.addMessage(msg, ListInfo.InfoType.ERROR);
return ok(msg);
}
sendForm = sendForm.fill(toUpdate);
// return super.editForm(key);
return formRenderMethod(key, sendForm);
}
/**
* Function which render and return the form independently of the crudPlay
* plugin.
* @return
*/
private Result formRenderMethod(K key, Form<M> form)
{
Method method;
try{
Class<?> template = Class.forName("views.html." + templateForForm());
method = template.getMethod("render", myKeyClass, Form.class);
Logger.debug("key: " + key.toString());
//here is the magic cast !
return ok((Content) method.invoke(template, new Long(key.toString()), form));
}catch(Throwable e){
Logger.error(e.getMessage());
}
return null;
}
protected String templateForForm()
{
return className.toLowerCase() + "Form";
}
[...]
}
And this is de dao. I don't know what is the utility of that class, but I know it is involved in the process of getting a Model instance out of a key. In case it is helpful.
public class User extends Model implements BasicModel<Long>
{
[...]
public static class Dao extends BasicDAO<Long, User> {
@Inject
public Dao() {
super(Long.class, User.class);
}
}
}
In my application I have mulpitle database ebean servers:
ebean.central="models.central."
ebean.local="models.local."
As I understand, there is no support for multiple servers:
public BasicDAO(Class keyClass, Class modelClass) {
this(new Finder<K, M>(keyClass, modelClass));
}
In this code there is no serverName parameter in the Finder constructor call.
What can I do in this situation ?
Do you plan to add this feature in the future ?
I am not sure how to generate a select tag.i can see the code in Complex model but i don't see any select field.Can you help me figure out how to use it.
static enum Select {
@EnumValue("1")
OPTION1,
@EnumValue("2")
OPTION2,
@EnumValue("3")
OPTION3,
;
}
Now how should i define another field that uses values from this enum?
Hi. I have been building an extension to play-crud called Twixt. https://github.com/ianrae/twixt
I would like to do a pull request to make some classes such as FieldMetadata more extensible. Would that be acceptable to you?
Hi,
I'm trying to run the sample, and I'm running into this compile-time error:
! @6eaa0p04e - Internal server error, for (GET) [/] ->
sbt.PlayExceptions$CompilationException: Compilation error[error: package play.utils.cache does not exist]
at sbt.PlayReloader$$anon$2$$anonfun$reload$2$$anonfun$apply$15$$anonfun$apply$16.apply(PlayReloader.scala:349) ~[na:na]
at sbt.PlayReloader$$anon$2$$anonfun$reload$2$$anonfun$apply$15$$anonfun$apply$16.apply(PlayReloader.scala:349) ~[na:na]
at scala.Option.map(Option.scala:133) ~[scala-library.jar:na]
at sbt.PlayReloader$$anon$2$$anonfun$reload$2$$anonfun$apply$15.apply(PlayReloader.scala:349) ~[na:na]
at sbt.PlayReloader$$anon$2$$anonfun$reload$2$$anonfun$apply$15.apply(PlayReloader.scala:346) ~[na:na]
at scala.Option.map(Option.scala:133) ~[scala-library.jar:na]
I'm getting a NullPointerException when I attempt to edit a record. I believe this is due to the fact that my keys are UUIDs. I am able to successfully edit entities that use a Long as a Key, but all my other entities use UUIDs and get this error.
Here is where the error occurs:
public Result show(String key) {
Object k = this.keyConverter.convert(key);
return this.delegate.read(k);
}
I believe this.keyConverter == null;
Here is the stack trace:
Caused by: java.lang.NullPointerException: null
at play.utils.crud.ControllerProxy.show(ControllerProxy.java:30) ~[play2-crud_2.11-0.7.4-SNAPSHOT.jar:0.7.4-SNAPSHOT]
at play.utils.crud.RouterController.show(RouterController.java:76) ~[play2-crud_2.11-0.7.4-SNAPSHOT.jar:0.7.4-SNAPSHOT]
at play.crud.Routes$$anonfun$routes$1$$anonfun$applyOrElse$5$$anonfun$apply$39.apply(routes_routing.scala:174) ~[play2-crud_2.11-0.7.4-SNAPSHOT.jar:0.7.4-SNAPSHOT]
at play.crud.Routes$$anonfun$routes$1$$anonfun$applyOrElse$5$$anonfun$apply$39.apply(routes_routing.scala:174) ~[play2-crud_2.11-0.7.4-SNAPSHOT.jar:0.7.4-SNAPSHOT]
at play.core.Router$HandlerInvokerFactory$$anon$4.resultCall(Router.scala:264) ~[play_2.11-2.3.8.jar:2.3.8]
PageAdapter will make it easy to cache Page entries.
I am creating an intermediate class between CRUDController and my controllers. That said all my controllers extend MyCrudController which extend CRUDController :
public abstract class MyCrudController<K, M extends BasicModel<K>> extends CRUDController<K, M>
{
public MyCrudController(DAO<K, M> dao, Class<K> keyClass, Class<M> modelClass)
{
super(dao, Form.form(modelClass), keyClass,
modelClass, 10, "id" + modelClass.getSimpleName());
className = modelClass.getSimpleName();
Logger.debug("className: " + className);
}
}
Extended by :
public class UserCtr extends MyCrudController<Long, User>
{
@Inject
public UserCtr(models.UserDao dao)
{
super(dao, Long.class, User.class);
}
}
Everythings work fine, except that I get the following error every time I restart the interface :
Note that the @Inject in the UserCtr must be present, otherwise, the application doesn't acknowledge the existence of UserCtr. Adding @Inject to the constructor of MyCrudController or UserDAO doesn't change anything
com.google.inject.ConfigurationException: Guice configuration errors:
1) No implementation for crud.MyCrudController was bound.
while locating crud.MyCrudController
1 error
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1004)
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:961)
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1013)
at play.utils.inject.InjectAdapter.getInstance(InjectAdapter.java:34)
at play.utils.crud.CRUDManager.getController(CRUDManager.java:59)
at play.utils.crud.GlobalCRUDSettings.getControllerInstance(GlobalCRUDSettings.java:12)
at play.utils.meta.cp.ClasspathScanningControllerRegistry.scanCrud(ClasspathScanningControllerRegistry.java:151)
at play.utils.meta.cp.ClasspathScanningControllerRegistry.<init>(ClasspathScanningControllerRegistry.java:46)
at play.utils.crud.CRUDManager.initialize(CRUDManager.java:45)
at play.utils.crud.GlobalCRUDSettings.onStart(GlobalCRUDSettings.java:23)
at play.core.j.JavaGlobalSettingsAdapter.onStart(JavaGlobalSettingsAdapter.scala:18)
at play.api.GlobalPlugin.onStart(GlobalSettings.scala:203)
at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:88)
at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:88)
at scala.collection.immutable.List.foreach(List.scala:318)
at play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:88)
at play.api.Play$$anonfun$start$1.apply(Play.scala:88)
at play.api.Play$$anonfun$start$1.apply(Play.scala:88)
at play.utils.Threads$.withContextClassLoader(Threads.scala:18)
at play.api.Play$.start(Play.scala:87)
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:139)
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:112)
at scala.Option.map(Option.scala:145)
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:112)
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:110)
at scala.util.Success.flatMap(Try.scala:200)
at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:110)
at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:102)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
at scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1361)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
[info] play - Application started (Dev)
I haven't understand a word of what is Guice, but the problem has something to do with it.
Thanks for help.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.