我是新來的scala和類型安全的語言,所以我可以忽略一些基本的東西。這說這是我的問題。玩框架表單提交沒有通過驗證
目標:我想提交一個只有一個文本輸入的表單,並且不會鏡像我的案例類。它最終將會類型:字符串
問題:不能進入成功從折
我對前端的形式,我選擇在HTML,而不是劇中的寫形式傭工(願意改變,如果這是問題)
<form method="POST" action="@routes.Application.shorten()">
<input id="urlLong" name="urlLong" type="text" placeholder="http://www.google.com/" class="span4"/>
<div class="form-actions">
<button type="reset" class="btn">Reset</button>
<button type="submit" class="btn btn-primary pull-right"><span class="icon-random"></span> Shrtn It!</button>
</div>
</form>
時處理後的動作控制器看起來是這樣的:
import ...
object Application extends Controller {
val newUrlForm = Form(
"urlLong" -> text
)
def shorten = Action { implicit request =>
val urlLong = newUrlForm.bindFromRequest.get
newUrlForm.fold(
hasErrors = { form =>
val message = "Somethings gone terribly wrong"
Redirect(routes.Application.dash()).flashing("error" -> message)
},
success = { form =>
val message = "Woot it was successfully added!"
Redirect(routes.Application.dash()).flashing("success" -> message)
}
}
...
}
我試圖關注/修改Play for Scala書中的教程,但它們將它們的表單與案例類匹配,並且Play的教程也與我的用例有點相似。除了你的答案,如果你可以包括你如何計算出來,這將是非常有用的,所以我可以更好地解決自己的問題。
- http://www.playframework.com/documentation/2.0/ScalaForms
- http://www.playframework.com/documentation/api/2.0/scala/index.html#play.api.data.Forms $
此外,如果它的事項我使用的IntelliJ IDEA作爲我的IDE
是映射只是一種轉換形式的名稱,然後的方式,還是他們服務其他一些(必要的)目的? – AKnox 2013-02-18 20:23:00
yes映射是一種將html表單映射到您自己的域對象的簡單方法。在這種情況下,它是一個單一的參數,所以它沒有太大的幫助,事實上,你應該能夠直接綁定,如[這個答案](http://stackoverflow.com/a/9657824/152601)所示。但是,對於更復雜的場景,它確實非常方便 – mericano1 2013-02-18 22:06:19