Java 斯卡拉演奏!表格+;动态路线
现在我的url是这样的:/chart?phrase=xxx 我想美化它,所以我创建了一条路线:Java 斯卡拉演奏!表格+;动态路线,java,forms,scala,playframework-2.0,Java,Forms,Scala,Playframework 2.0,现在我的url是这样的:/chart?phrase=xxx 我想美化它,所以我创建了一条路线: GET /chart/:phrase controllers.Application.chart(phrase: String) 这是我以前的表格: @form(routes.Application.chart) { @inputText(tagForm("phrase"), 'placeholder -> "Phrase") <input
GET /chart/:phrase controllers.Application.chart(phrase: String)
这是我以前的表格:
@form(routes.Application.chart) {
@inputText(tagForm("phrase"), 'placeholder -> "Phrase")
<input type="submit" value="Search for phrase">
}
@表单(routes.Application.chart){
@输入文本(标记形式(“短语”),“占位符->短语”)
}
但编译器返回有关表单(调用)中缺少参数的错误。我怎样才能做到这一点
请注意,我正在使用自定义类“tagForm”。将您的url更改为
GET /chart/:phrase controllers.Application.chart(phrase: String)
看看你的模板
routes.Application.chart("phraseValue")
现在url看起来像
/chart/pharseValue
编辑:不清楚您是否不需要查询参数,因此请查看
路由URI中不包括查询参数。有两种方法可以使用它们。一个需要默认值,另一个使用
选项
,具体取决于适合您的需要
# Defaults to an empty string if the query parameter is not in the URL.
GET /chart controllers.Application.chart(phrase: String ?= "")
# Defaults to `None` if the query parameter is not in the URL.
GET /chart controllers.Application.chart(phrase: Option[String])
反向路线的工作原理如下:
// Routes with default values
routes.Application.chart("test") // Outputs /chart?phrase=test
routes.Application.chart() // Outputs /chart
// Routes using `Option`
routes.Application.chart(Some("test")) // Outputs /chart?phrase=test
routes.Application.chart(None) // Outputs /chart
我找到了解决办法。也许它不完美,但适合我的需要 为了在提交表单时拥有漂亮的URL,我创建了两个路由:
GET /chart/:phrase controllers.Application.chart(phrase: String)
GET /getResult controllers.Application.getResult
和两项行动:
def chart(query: String) = Action { implicit request =>
tagForm.bind(Map("phrase"->query)).fold(error,success)
}
def getResult = Action { implicit request =>
tagForm.bindFromRequest.fold(
errors => BadRequest(...),
req => {
...
Redirect(routes.Application.chart(string))
}
)
}
格式:@form(routes.Application.getResult)
表单将tagForm提交给getResult,在验证后,它将重定向到pretty url。我得到的url如下:
/chart?phrase=value
。我想把它简化为/chart/value
@m.cichacz,然后你必须使用:pharse
然后我得到短语值?短语=值
。我做错什么了吗?对不起,我说得不够清楚。不幸的是,反向路由部分并没有完全回答我的问题。写一个全新的函数在视图中保存一个单词真的值得吗?像这样重定向被认为是一种不好的做法,而且,使这项工作正常进行所需的额外代码将随着表单的增加而成倍增加。请不要这样做。