Play 2.4: Form: konnte keinen impliziten Wert für Parameter-Nachrichten finden: play.api.i18n.Messages
Ich bin neu in Play framework und versuchte zu imitieren, die helloworld Probe in meiner lokalen Maschine, aber ich habe einen Fehler festgestellt:
Routen:
# Home page
GET / controllers.Application.index
# Hello action
GET /hello controllers.Application.sayHello
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
controller:
package controllers
import play.api.mvc._
import play.api.data._
import play.api.data.Forms._
import views._
class Application extends Controller {
val helloForm = Form(
tuple(
"name" -> nonEmptyText,
"repeat" -> number(min = 1, max = 100),
"color" -> optional(text)
)
)
def index = Action {
Ok(html.index(helloForm))
}
def sayHello = Action { implicit request =>
helloForm.bindFromRequest.fold(
formWithErrors => BadRequest(html.index(formWithErrors)),
{case (name, repeat, color) => Ok(html.hello(name, repeat.toInt, color))}
)
}
}
anzeigen:
@(helloForm: Form[(String,Int,Option[String])])
@import helper._
@main(title = "The 'helloworld' application") {
<h1>Configure your 'Hello world':</h1>
@form(action = routes.Application.sayHello, args = 'id -> "helloform") {
@inputText(
field = helloForm("name"),
args = '_label -> "What's your name?", 'placeholder -> "World"
)
@inputText(
field = helloForm("repeat"),
args = '_label -> "How many times?", 'size -> 3, 'placeholder -> 10
)
@select(
field = helloForm("color"),
options = options(
"" -> "Default",
"red" -> "Red",
"green" -> "Green",
"blue" -> "Blue"
),
args = '_label -> "Choose a color"
)
<p class="buttons">
<input type="submit" id="submit">
<p>
}
}
Habe ich Spielen 2.4 installiert und erstellt das Projekt mit IntelliJ Idea 14 über Aktivator Vorlage.
InformationsquelleAutor der Frage arjayads | 2015-06-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach dem hinzufügen
implicit messages
Parameter zu sichten, können Sie einfach fügen Sie die folgenden imports und verwenden Sie die alte controller-Klassen oder auch Objekte ohne weitere Veränderungen:InformationsquelleAutor der Antwort ps_ttf
Ansicht-Formular-Helfer (wie
@inputText
) erfordert die übergabe eines implizitenplay.api.i18n.Messages
parameter auf Ihre Ansicht. Sie können dies tun, hinzufügen(implicit messages: Messages)
um die Signatur in Ihrem Blick. Ihr Blick wird dies:Dann in Ihrer Anwendung-controller, müssen Sie diese parameter implizit in Ihrem Umfang. Der einfachste Weg, dies zu tun ist die Umsetzung von spielen ist
I18nSupport
Merkmal.In deinem Beispiel würde dies wie folgt Aussehen:
In Ihrem controller können Sie natürlich auch Ihre eigene Implementierung der
MessagesApi
. Da das Spiel kennt out of the box, wie zum injizieren einerMessagesApi
Sie können einfach mit Anmerkungen versehen Sie Ihre controller mit@Inject
und lassen Sie spielen die Arbeit für Sie tun.Als Matthias Braun erwähnt, Sie müssen auch
in Ihrem
build.sbt
Sehen https://www.playframework.com/documentation/2.4.x/ScalaI18N weitere Informationen zu I18n.
InformationsquelleAutor der Antwort Roman
Verwendung von Formular-Helfer benötigt Sie, um eine implizite
play.api.i18n.Messages
parameter auf Ihre Ansicht. Sie können dies tun, hinzufügen(implicit messages: Messages)
zu Ihrer Ansicht. Ihr Blick wird dies:Dann manuell injizieren Sie in Ihre Controller
dann endlich add-on zu Ihrem Hauptindex-controller-Klasse
InformationsquelleAutor der Antwort arvind audacious