Nel gioco 1.x voi hanno avuto il parametro http.path, che vi ha permesso di impostare un URL da aggiungere ad ogni percorsoCome aggiungere un prefisso a tutti i miei percorsi in Play Framework 2?
Come posso realizzare someting simile in gioco 2.0?
Nel gioco 1.x voi hanno avuto il parametro http.path, che vi ha permesso di impostare un URL da aggiungere ad ogni percorsoCome aggiungere un prefisso a tutti i miei percorsi in Play Framework 2?
Come posso realizzare someting simile in gioco 2.0?
ho chiesto alla play's discussion group e ci hanno aiutato a realizzare questa versione iniziale
creo un PrefixedRequest come questo
import play.api.mvc.RequestHeader
import play.api.Play.configuration
import play.api.Play.current
class PrefixedRequest(request: RequestHeader) extends RequestHeader {
def headers = request.headers
def queryString = request.queryString
// strip first part of path and uri if it matches http.path config
def path = ("^" + prefix).r.replaceFirstIn(request.path, "/")
def uri = ("^" + prefix).r.replaceFirstIn(request.uri, "/")
def method = request.method
def remoteAddress = request.remoteAddress
lazy val prefix = {
val config = configuration.getString("http.path").getOrElse("")
if (config.endsWith("/")) config else config + "/"
}
}
object PrefixedRequest {
def apply(request: RequestHeader) = new PrefixedRequest(request)
}
Poi l'ho usato in Global.scala
import play.api.GlobalSettings
import play.api.mvc.RequestHeader
import play.api.mvc.Handler
object Global extends GlobalSettings {
override def onRouteRequest(request: RequestHeader): Option[Handler] = {
super.onRouteRequest(PrefixedRequest(request))
}
}
finnally aggiunto this to application.conf
http.path=/prefix/
Sembra funzionare, ma non ho scoperto come aggiungere quel prefisso alle rotte invertite ... qualcuno può darmi una mano su quella parte?
-
Alcuni link utili
In Play 2.1 è possibile farlo con la seguente opzione in conf/application.conf
:
application.context="/your/prefix"
da Play 2.4 questa proprietà si chiama play.http.context
(tratto dal commento di Gman).
Questo è molto più semplice della risposta accettata (che potrebbe non aver funzionato in gioco 2.0) – Nathan
Questa è la risposta corretta –
Solo per far sapere ad altre persone che provengono da google, nel gioco 2.4 è cambiato in 'play.http.context' (vedere https://www.playframework.com/documentation/2.4. x/Migration24) – Gman
a quanto pare, queste funzionalità non sarà incluso prima della versione 2.1 - https://github.com/playframework/Play20/commit/da6bbc4 – opensas
Potrebbe essere grande per i18n (/ fr,/en ...) – iwalktheline
I pensa che sarebbe meglio estendere http://www.playframework.org/documentation/api/2.0/scala/play/api/mvc/WrappedRequest.html – Drew