Take a look at the code step by step and see what each line gives. I have converted your code into a complete sample code, but I hope I capture the essence of your code.
package controllers
import play.api._
import play.api.mvc._
class Sample extends Controller {
def hello(name: String) = Action {
implicit req =>
import routes.javascript._
val jsRoutesClass = classOf[routes.javascript]
val controllers = jsRoutesClass.getFields.map(_.get(null))
val met = for (
controller <- controllers;
method <- controller.getClass.getDeclaredMethods
) yield method
Ok(met.mkString(", "))
}
}
When you run this query, you will see something like
public play.api.routing.JavaScriptReverseRoute controllers.javascript.ReverseSample.hello(), public java.lang.String controllers.javascript.ReverseSample._defaultPrefix()
, , _defaultPrefix() String.
. JavaScriptReverseRoute , , .
, . :
package controllers
import play.api._
import play.api.mvc._
class Sample extends Controller {
def hello(name: String) = Action {
implicit req =>
import routes.javascript._
val jsRoutesClass = classOf[routes.javascript]
val controllers = jsRoutesClass.getFields.map(_.get(null))
val met = for (
controller <- controllers;
method <- controller.getClass.getDeclaredMethods
) yield method.invoke(controller)
Ok(met.mkString(", "))
}
}
, , - :
JavaScriptReverseRoute(controllers.Sample.hello,
function(name) {
return _wA({method:"GET", url:"/" + (function(k,v) {return v})("name", encodeURIComponent(name))})
}
),
, , ,, , val met 0 JavaScriptReverseRoute 1 .
, , action <- method.invoke(controller).toString javascript , . , String , yield , .
, _.defaultPrefix() - , .
, :
package controllers
import play.api._
import play.api.mvc._
class Sample extends Controller {
def hello(name: String) = Action {
implicit req =>
import routes.javascript._
val jsRoutesClass = classOf[routes.javascript]
val controllers = jsRoutesClass.getFields.map(_.get(null))
val met = for (
controller <- controllers;
method <- controller.getClass.getDeclaredMethods if method.getReturnType() == classOf[play.api.routing.JavaScriptReverseRoute]
) yield method.invoke(controller).asInstanceOf[play.api.routing.JavaScriptReverseRoute]
Ok(met.mkString(", "))
}
}
.