私はスカラ言語とタイプセーフ言語を初めて使用するので、基本的なことを見落としている可能性があります。つまり、ここに私の問題があります。
目標: 1 つのテキスト入力だけで、ケース クラスを反映していないフォームを送信したい。最終的には次のタイプになります: String
問題:フォールドから成功できない
フロントエンドに、play のフォーム ヘルパーの代わりに 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 book のチュートリアルをフォロー/変更しようとしていましたが、フォームはケース クラスに一致しており、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のアイデアをアイデアとして使用しています