Play 2.6.0 released!

1,438 views
Skip to first unread message

Greg Methvin

unread,
Jun 23, 2017, 2:00:34 PM6/23/17
to play-framework

The Play team is proud to announce the release of Play 2.6.0. This release adds a number of new features and continues our efforts to make Play more modular, flexible, and secure. It also completes our removal of global state from the core of Play, making it easier to write self-contained Play applications.

Some improvements in Play 2.6.0 include:

  • Akka HTTP is now the default server backend. We still will support the Netty server backend but plan to implement most new features on Akka HTTP.
  • Experimental HTTP/2 support on Akka HTTP.
  • No internal use of the global application instance (Play.current). It's now deprecated and possible to disable completely using play.allowGlobalApplication = false.
  • Request attributes for attaching arbitrary typed data to requests.
  • Twirl templates now can have a constructor for passing application dependencies. This allows for injectable templates.
  • Support for SLF4J markers in both the Java and Scala API, and a special security marker for security-related operations.
  • Configuration improvements in the Scala API, using typeclasses for reading arbitrary types, and removal of the Java configuration API in favor of standard Typesafe Config.
  • Support for compile-time dependency injection in Java, allowing you to create a full Play application in Java without Guice or any dependency injection framework. We have an example using Dagger 2.
  • Play JSON is now a separate project with no Play dependencies and support for Scala.js.
  • There is now a standalone version of Play WS, and the WS module in Play contains several useful improvements including HTTP caching support.
  • Full support for Scala 2.12.

As usual, you can see the full list of improvements in the release highlights and learn how to migrate from the migration guide. See the full changelog for the complete list of changes.

To get started with Play 2.6.0, you can use one of the seed projects available from the Play website. There are also a number of more detailed examples, which are also available on GitHub (see the 2.6.x branch on any example repo).

A special thanks to the many hard-working contributors to this release:

   235    Will Sargent
   209    Greg Methvin
   128    Marcos Pereira
    84    Schmitt Christian
    70    Matthias Kurz
    45    Play Team
    30    Ben McCann
    22    Nafer Sanabria
    17    Christian Schmitt
    14    James Roper
    12    Rich Dougherty
     9    Cédric Chantepie
     8    Johannes Rudolph
     7    Julien Richard-Foy
     7    Dominik Dorn
     5    Konrad `ktoso` Malawski
     5    monkey-mas
     4    Tsuyoshi Yoshizawa
     4    mmizutani
     4    Julian Tescher
     4    kenji yoshida
     4    Kunal Kanojia
     4    Kaz Sera
     4    Wojciech Langiewicz
     4    Severinas Monkevicius
     4    Rajendra prasad Gujja
     3    yuichiro umezawa
     3    Mikołaj Jakubowski
     3    Mike Bryant
     3    Reto Habluetzel
     3    Sushil Kumar
     3    Thomas Grainger
     3    Simon Effing
     3    James Ward
     3    Kyle Valade
     3    Samy Dindane
     3    Jasper Denkers
     3    antego
     2    Grzegorz Slowikowski
     2    Adam Lane
     2    Adam Wiliams
     2    Alex Dupre
     2    Alex Varju
     2    Anand Singh
     2    Arpit Suthar
     2    Ben Flowers
     2    Benoit Louy
     2    Bryan Barkley
     2    Christian Kaps
     2    Dale Wijnand
     2    Damian Ball
     2    David Heidrich
     2    Diego Collarana
     2    Discipe
     2    Dzmitry Rusak
     2    Erwin Oegema
     2    Fatih Ergüven
     2    Francisco Javier Torres
     2    Abdul Rauf
     2    Henry Cleland
     2    Jaroslaw Kacerka
     2    Jason Zavaglia
     2    Jonas Anso
     2    João Gonçalves
     2    Karel Čemus
     2    Koen De Groote
     2    Kristijan Bambir
     2    Kyle
     2    Levente Holló
     2    Liu Tao
     2    Lukasz Tymoszczuk
     2    Mariot Chauvin
     2    Markus Hauck
     2    Mathias Kub
     2    Maxence Warzecha
     2    Mike Mazur
     2    Mike Slinn
     2    Niklas Lochschmidt
     2    Rene Weber
     2    René Vangsgaard
     2    Richard Lichlyter-Klein
     2    Santiago Mera
     2    Satendra kumar
     2    Shenker93
     2    Shunsuke Tadokoro
     2    Tan Wen Jun
     2    Thomas Toye
     2    Viktor Klang (√)
     2    Vladimir Samoylov
     2    Yu-Fan Tung
     2    Yusuke Izawa
     2    benoj
     2    boosh
     2    cchantep
     2    chainkite
     2    el-dom
     2    fishjd
     2    jxtps
     2    matsu-chara
     2    maxmc
     2    petermullins
     2    prithivirajan
     2    virusdave
     1    Gregg Hernandez
     1    Sakib Hadžiavdić
     1    Florian Meriaux
     1    hktonylee
     1    takirohit
     1    Ethan
     1    Sean Löfgren
     1    Seth Tisue
     1    Ender Tunç
     1    Ang Hao Yang
     1    Shifeng Zhang
     1    Shisei Hanai
     1    velabits
     1    Emma Burrows
     1    Earl St Sauver
     1    max5599
     1    Thiago Arrais
     1    Dick Wall
     1    zhangshifeng
     1    Daniel Obasi
     1    Uxio
     1    Uxío
     1    Valeryi Baibossynov
     1    Valy
     1    Andriy Kuba
     1    Vincent Munier
     1    Alexandre Dufournet
     1    Konrad Malawski
     1    Wai-chuen
     1    Katou Akihiro
     1    Claudio Bley
     1    Jørn Ølmheim
     1    Chafik
     1    morellik
     1    mufeng
     1    Josh Soref
     1    Zava
     1    Mark Beeson
     1    Mark Siebert
     1    adrianhurt
     1    Martin Pallmann
     1    Byron Weber Becker
     1    Mathieu Pichette
     1    Josep Prat
     1    Matthias Lüneberg
     1    nafg
     1    Jentsch
     1    netroby
     1    nndeeb
     1    Jannis Bloemendal
     1    J. Miguel Mendez
     1    Nathaniel Fischer
     1    Nick
     1    Nick Zahn
     1    Nicolas Rémond
     1    Alexandr Radchykov
     1    Patrick Laxton
     1    Peter Perhac
     1    Ivan Yurchenko
     1    Harald Gliebe
     1    yutayokoi
     1    rmcloughlin
     1    Han van Venrooij
     1    hagl
--
Greg Methvin
Tech Lead - Play Framework

R.M.

unread,
Jun 23, 2017, 2:22:53 PM6/23/17
to Play Framework
Message has been deleted
Message has been deleted

ßìnòy S

unread,
Jun 23, 2017, 2:33:13 PM6/23/17
to Play Framework
The g8 template does not take in new values when cloning the repository


02:27:13 ~/workstation/workspace/entdev-workspace$ sbt new playframework/play-scala-seed.g8
WARN
: No sbt.version set in project/build.properties, base directory: /home/sb/workstation/workspace/entdev-workspace
[warn] Executing in batch mode.
[warn]   For better performance, hit [ENTER] to switch to interactive mode, or
[warn]   consider launching sbt without any commands, or explicitly passing 'shell'
[info] Set current project to entdev-workspace (in build file:/home/sb/workstation/workspace/entdev-workspace/)


This template generates a Play Scala project


name
[play-scala-seed]: play-2.6
organization
[com.example]: com.testing
scala_version
[2.12.2]:
scalatestplusplay_version
[3.0.0-M3]:
play_version
[2.6.0-M4]: "2.6.0"


Template applied in ./play-2.6


02:27:59 ~/workstation/workspace/entdev-workspace$ cat play-2.6/project/
build
.properties  plugins.sbt       scaffold.sbt      
02:27:59 ~/workstation/workspace/entdev-workspace$ cat play-2.6/project/plugins.sbt
// The Play plugin
addSbtPlugin
("com.typesafe.play" % "sbt-plugin" % "2.6.0-M4")

Thanks for the amazing work though


On Friday, June 23, 2017 at 2:00:34 PM UTC-4, Greg Methvin wrote:

Will Sargent

unread,
Jun 23, 2017, 2:39:47 PM6/23/17
to Play Framework
Okay, I will clean this up.  Thanks for catching it.

workingDog

unread,
Jun 23, 2017, 7:42:47 PM6/23/17
to Play Framework
I just cannot see it.

"Play JSON is now a separate project with no Play dependencies and support for Scala.js."

is this saying:
"Play JSON is now a separate project with no Play dependencies and support Scala.js."

or is it saying:

"Play JSON is now a separate project with no Play dependencies and now Play support Scala.js."

Is there a project with Play JSON for Scala.js? 

Greg Methvin

unread,
Jun 23, 2017, 8:09:38 PM6/23/17
to play-framework, workingDog
I guess the wording isn't totally clear. Play JSON is its own project (https://github.com/playframework/play-json) that does not depend on other Play modules. That project contains Scala.js and JVM versions of the library.

--
You received this message because you are subscribed to the Google Groups "Play Framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email to play-framework+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/play-framework/dfac2e58-c7fe-45ef-a412-c57a9c1a7b70%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

workingDog

unread,
Jun 23, 2017, 8:30:33 PM6/23/17
to Play Framework, ringow...@gmail.com
thanks for your reply, and sorry if it did sound a bit abrupt. Great project.
However I still cannot see the Play JSON Scala.js library.
To unsubscribe from this group and stop receiving emails from it, send an email to play-framewor...@googlegroups.com.

Greg Methvin

unread,
Jun 23, 2017, 8:44:41 PM6/23/17
to play-framework, workingDog
I'm not sure what you mean.

The play-json library I linked provides the scalajs version as well: https://github.com/playframework/play-json/blob/f9c1b79/build.sbt#L195


To unsubscribe from this group and stop receiving emails from it, send an email to play-framework+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/play-framework/f2cfcf60-198d-43fa-8b34-a931737a903d%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

workingDog

unread,
Jun 23, 2017, 8:57:45 PM6/23/17
to Play Framework, ringow...@gmail.com
thanks for the link. I've been trolling the maven central com.typesafe.play pages but could not see the sjs0.6_2.12 entry. Great news to have Play JSON for Scala.js.

Andrew Gaydenko

unread,
Jun 25, 2017, 12:20:42 PM6/25/17
to Play Framework
Very disappointed. These all last years steps away from Scala towards Java/DI are really sad. Now even ActionBuilder is replaced with DI crap. It isn't just Java crap. It is crap forcing developers (at the need of project evolution) to edit/adapt all handlers! 

The direction will not get Java developers, but it lose Scala ones. I understand why more and more developers go to typelevel.org.

Sorry, if I was sharp. You see, emotions.. 

Will Sargent

unread,
Jun 25, 2017, 2:57:51 PM6/25/17
to Play Framework
Di isn't towards Java, and it isn't to "get Java developers."  It's because global state is problematic, and it's hard to evolve anything that uses global state.  Instead, state is passed in through constructors, or even through parameters, and we can change the bindings that are passed in.  This was the case with ActionBuilder, because the body parser was pulled from the "current" application through a static method instead of having a body parser passed in.

DI is also a functional programming technique. The reader monad is a very popular way to do dependency injection in FP -- any dependencies are passed in through a Reader instead of being handled in a singleton object that can't be swapped out.  Type classes are another example where the construction of the type can come with dependencies that are bound to whatever implicit is in scope.  The benefits of Reader monads and type classes aren't obvious to someone who hasn't encountered them before, but once you get the hang of them, they are extremely useful.   Breaking out the ActionBuilder from assumed global state is useful in the same way.

Thanks,
Will. 

Andrew Gaydenko

unread,
Jun 25, 2017, 3:38:50 PM6/25/17
to Play Framework
Will, yes, I see, you are insisting in Scala language is too poor language to resolve global state "problem" acceptable way. OK, we have different feeling of the beautiful,  it is commonplace. Thanks for sharing the team opinion!

Greg Methvin

unread,
Jun 25, 2017, 4:17:57 PM6/25/17
to play-framework
Hi Andrew,

I don't think that's what Will is saying, and it's certainly not the team's opinion that Scala is too poor to solve the global state "problem" in an acceptable way. Play supports using plain Scala to manage dependencies through it's compile-time DI support.

Perhaps the decision to provide Guice support by default made it seem like we were moving towards Java, but since we introduced Guice it's always been possible to extend BuiltInComponents and assemble your cake manually in Scala. Guice support is also removed from the core of Play in 2.6.

I still don't quite understand what the specific issues are from the Scala point of view. Since I suspect this could turn into a long discussion, please start a new thread with your thoughts if you'd to discuss more.

Greg

On Sun, Jun 25, 2017 at 12:38 PM, Andrew Gaydenko <andrew....@gmail.com> wrote:
Will, yes, I see, you are insisting in Scala language is too poor language to resolve global state "problem" acceptable way. OK, we have different feeling of the beautiful,  it is commonplace. Thanks for sharing the team opinion!

--
You received this message because you are subscribed to the Google Groups "Play Framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email to play-framework+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/play-framework/58180b48-7d1b-4284-b4a8-b5e05f5240fc%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Justin du coeur

unread,
Jun 25, 2017, 5:59:24 PM6/25/17
to play-fr...@googlegroups.com
On Sun, Jun 25, 2017 at 3:38 PM, Andrew Gaydenko <andrew....@gmail.com> wrote:
Will, yes, I see, you are insisting in Scala language is too poor language to resolve global state "problem" acceptable way.

That's really a deep mischaracterization of what's being said.  What the Play group has said is that Global State Is Bad -- I think every responsible programmer would agree with that.  They've left wide open *how* you address that: you can use Java-ish approaches such as Guice, or Scala-ish ones such as Reader or MacWire.

It's unfair to say that the Play team are disrespecting Scala.  Quite the opposite: they have changed the framework so that you *can* use good pure-FP Scala techniques, which you couldn't quite do properly before because of the global state laced through the system...

Rok Kralj

unread,
Jun 26, 2017, 8:53:08 PM6/26/17
to Play Framework
I do not like how play now sends 6 headers with every request (even images!) with headers clearly meant only for HTML requests, like Content-Security-Policy.

Dne petek, 23. junij 2017 19.00.34 UTC+1 je oseba Greg Methvin napisala:

Will Sargent

unread,
Jun 26, 2017, 9:12:52 PM6/26/17
to play-fr...@googlegroups.com
The SecurityHeadersFilter applies a set of headers defined through configuration, but does not attempt to filter headers by content type: HTTP/2 header compression optimizes headers so effectively that it's very unlikely to be worth your while.

--
Will Sargent
Engineer, Lightbend, Inc.


--
You received this message because you are subscribed to the Google Groups "Play Framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email to play-framework+unsubscribe@googlegroups.com.

Denis Kalinin

unread,
Jun 27, 2017, 3:33:16 AM6/27/17
to Play Framework
After upgrading to Play 2.6 I noticed the following message appear in SBT log:

(Server started, use Enter to stop and go back to the console...)

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation

[info] - application - The app is about to start

Needless to say, "logback-classic" is (and has always been) present, and logging actually works fine. Adding another implementation (such as slf4j-nop) to the list of dependencies causes SLF4J to complain about multiple bindings being present, but the message doesn't go away.
The problem manifests itself only in development. After the app is packaged and run in production mode, everything is fine, which makes sense as "logback-classic" is indeed on the classpath. 
My guess is that either there is something wrong with the new Play SBT plugin or I'm missing something :)
SBT version is 0.13.15 (I tried both retail and sbt-extra - no difference).

Peace MICHAELS

unread,
Jun 27, 2017, 6:38:10 AM6/27/17
to Play Framework
Congrats on this release. is play now dropable into a maven or gradle project? we moved to Kotlin on almost all spring projects and we want to now do the same with play projects.

Tomas Zeman

unread,
Jun 27, 2017, 4:51:00 PM6/27/17
to Play Framework
Hello,

thanks, I am trying it now. i have 3 quick points which I see during the migration

1. default behavior of Cookie was changed.

Http.Cookie cookie = Http.Cookie.builder("aaa", "bbb").build();
will create a cookie with expiration date in past, so the cookie immediately "expires". (was ok in 2.5)

2. I have the same problems with logs at Denis


SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation

3. And I see strange warning about JWT

[warn] o.h.v.m.ParameterMessageInterpolator - HV000184: ParameterMessageInterpolator has been chosen, EL interpolation will not be supported
[info] play.api.Play - Application started (Dev)
[warn] p.a.m.DefaultJWTCookieDataCodec - decode: could not decode JWT: JWT signature does not match locally computed signature. JWT validity cannot be asserted and should not be trusted.
io.jsonwebtoken.SignatureException: JWT signature does not match locally computed signature. JWT validity cannot be asserted and should not be trusted.
at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:354)
    at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:481)

and than I see:
[warn] o.h.v.m.ParameterMessageInterpolator - HV000184: ParameterMessageInterpolator has been chosen, EL interpolation will not be supported

regards
tomas zeman

Will Sargent

unread,
Jun 27, 2017, 5:27:08 PM6/27/17
to play-fr...@googlegroups.com
I can look at the SLF4J binding issue in #2 -- it looks like it's harmless, but still annoying.

The ParameterMessageInterpolator is actually a bug in Hibernate, it looks like:


The JWT error you're seeing happens when you have a PLAY_SESSION cookie and you switch between applications without flushing your cookie.  It's technically correct, but the error message could be improved.

--
Will Sargent
Engineer, Lightbend, Inc.


--
You received this message because you are subscribed to the Google Groups "Play Framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email to play-framework+unsubscribe@googlegroups.com.

Marcos Pereira

unread,
Jun 27, 2017, 9:31:59 PM6/27/17
to play-fr...@googlegroups.com

--
You received this message because you are subscribed to the Google Groups "Play Framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email to play-framework+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/play-framework/6f85322a-a333-419c-b192-79970aa2eeff%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Marcos Pereira
Software Engineer, Lightbend.com

Grzegorz Słowikowski

unread,
Jun 28, 2017, 6:06:40 AM6/28/17
to play-fr...@googlegroups.com
Hi

This is probably the same issue I had here:
https://github.com/play2-maven-plugin/play2-maven-test-projects/commit/f1b2838721cb0e172b30eaff8407bb6e6151aeda

Regards
Grzegorz Slowikowski
> * Akka HTTP
> <https://www.playframework.com/documentation/2.6.x/AkkaHttpServer> is
> now the default server backend. We still will support the Netty
> server
> <https://www.playframework.com/documentation/2.6.x/NettyServer> backend
> but plan to implement most new features on Akka HTTP.
> * Experimental HTTP/2 support on Akka HTTP.
> * No internal use of the global application instance
> (|Play.current|). It's now deprecated and possible to disable
> completely using |play.allowGlobalApplication = false|.
> * Request attributes
> <https://www.playframework.com/documentation/2.6.x/Highlights26#Request-attributes> for
> attaching arbitrary typed data to requests.
> * Twirl templates now can have a constructor for passing
> application dependencies. This allows for injectable templates
> <https://www.playframework.com/documentation/2.6.x/Highlights26#Injectable-Twirl-Templates>.
> * Support for SLF4J markers
> <https://www.playframework.com/documentation/2.6.x/Highlights26#Logging-Marker-API> in
> both the Java and Scala API, and a special security marker
> <https://www.playframework.com/documentation/2.6.x/Highlights26#Security-Logging> for
> security-related operations.
> * Configuration improvements
> <https://www.playframework.com/documentation/2.6.x/Highlights26#Configuration-improvements> in
> the Scala API, using typeclasses for reading arbitrary types,
> and removal of the Java configuration API in favor of standard
> Typesafe |Config|.
> * Support for compile-time dependency injection in Java
> <https://www.playframework.com/documentation/2.6.x/JavaCompileTimeDependencyInjection>,
> allowing you to create a full Play application in Java without
> Guice or any dependency injection framework. We have an example
> using Dagger 2
> <https://github.com/playframework/play-java-dagger2-example/tree/2.6.x>.
> * Play JSON <https://github.com/playframework/play-json> is now a
> separate project with no Play dependencies and support for Scala.js.
> * There is now a standalone version of Play WS
> <https://github.com/playframework/play-ws>, and the WS module in
> Play contains several useful improvements
> <https://www.playframework.com/documentation/2.6.x/Highlights26#Play-WS-Improvements> including
> HTTP caching support.
> * Full support for Scala 2.12.
>
> As usual, you can see the full list of improvements in the release
> highlights
> <https://www.playframework.com/documentation/2.6.x/Highlights26> and
> learn how to migrate from the migration guide
> <https://www.playframework.com/documentation/2.6.x/Migration26>. See
> the full changelog
> <https://github.com/playframework/playframework/compare/2.5.x...2.6.0/> for
> the complete list of changes.
>
> To get started with Play 2.6.0, you can use one of the seed projects
> <https://www.playframework.com/download#seeds> available from the
> Play website. There are also a number of more detailed examples
> <https://www.playframework.com/download#examples>, which are also
> available on GitHub
> <https://github.com/playframework?utf8=%E2%9C%93&q=-example> (see
> *Greg Methvin*
> /Tech Lead - Play Framework/
> Lightbend, Inc. <https://www.lightbend.com/>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Play Framework" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to play-framewor...@googlegroups.com
> <mailto:play-framewor...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/play-framework/1f85fe8e-24f3-4513-a4a6-0d812c82c70c%40googlegroups.com
> <https://groups.google.com/d/msgid/play-framework/1f85fe8e-24f3-4513-a4a6-0d812c82c70c%40googlegroups.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout.
>
>
> ------------------------------------------------------------------------
> Logo AVG <http://www.avg.com/internet-security>
>
> Ta wiadomość e-mail została sprawdzona pod kątem wirusów przez
> oprogramowanie antywirusowe AVG.
> www.avg.com <http://www.avg.com/internet-security>
>
>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

Will Sargent

unread,
Jun 28, 2017, 10:58:16 AM6/28/17
to play-fr...@googlegroups.com
I believe you're right;


It may have multiple causes.  Play tries to ensure that the SLF4J implementation is only loaded inside the scope of the application's class loader, so there aren't multiple SLF4J libraries floating around (i.e. Logback and Log4J2), but it only works if nothing outside the classloader is using SLF4J...

--
Will Sargent
Engineer, Lightbend, Inc.



> To view this discussion on the web visit
> https://groups.google.com/d/msgid/play-framework/1f85fe8e-24f3-4513-a4a6-0d812c82c70c%40googlegroups.com
> <https://groups.google.com/d/msgid/play-framework/1f85fe8e-24f3-4513-a4a6-0d812c82c70c%40googlegroups.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout.
>
>
> ------------------------------------------------------------------------
> Logo AVG <http://www.avg.com/internet-security>
>
> Ta wiadomość e-mail została sprawdzona pod kątem wirusów przez
> oprogramowanie antywirusowe AVG.
> www.avg.com <http://www.avg.com/internet-security>
>
>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
--
You received this message because you are subscribed to the Google Groups "Play Framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email to play-framework+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/play-framework/08b55324-024d-1b34-d1ac-50cded15fe58%40gmail.com.

Alexej Haak

unread,
Jun 30, 2017, 4:56:40 AM6/30/17
to Play Framework
Gratulations on the release!

I don't see a way to create a generally composable ActionBuilder / ActionFunction. For example something so I can later compose my LoginAction from library A with my Validation Action from library B.

Did I miss something?

Justas Batulevicius

unread,
Jul 3, 2017, 5:50:18 AM7/3/17
to Play Framework
Hello,

Did play.libs.ws.StandaloneWsResponse.getUri() method disappeared or WSResponse should be treated differently? 

Reply all
Reply to author
Forward
0 new messages