10

私は Play フレームワークを初めて使用し、2.1 のサンプルcomputer-database調べています。例では、次のフォーム定義を完全には理解していません。

ここでのComputer.applyandの役割は何ですか?Computer.unapply

  val computerForm = Form(
    mapping(
      "id" -> ignored(NotAssigned:Pk[Long]),
      "name" -> nonEmptyText,
      "introduced" -> optional(date("yyyy-MM-dd")),
      "discontinued" -> optional(date("yyyy-MM-dd")),
      "company" -> optional(longNumber)
    )(Computer.apply)(Computer.unapply)
  )

(からcontrollers/Application.scala)

編集:これは良いリソースのようです: https://groups.google.com/forum/?fromgroups=#!topic/play-framework/dxNQ8E81YJsしかし、全体像を完全に把握できているかどうかはまだわかりません。

4

2 に答える 2

5

Play2 /フォームに固有のものではないため、Scalaコンテキストで何が適用/非適用されるかを学ぶ必要があります。

applyメソッドでは、必要なパラメーターを取得して、関心のあるクラスの新しいインスタンスを返します。unapplyで逆の操作を行うと、インスタンスを取得して必要な情報を抽出し、タプルの形式で返します。

一言で言えば:applyパラメータからコンピュータオブジェクトを構築するために使用されます。unapply逆の場合に使用され、Computerオブジェクトからパラメーターを抽出します。

于 2013-01-29T23:08:47.360 に答える
5

これは、フォームをケース クラス (この場合は ) のフィールドにバインドしたい場合の Play での一般的なパターンですComputer

このmappingメソッドを使用すると、フォームに入力してフォームからデータを抽出するために呼び出される構築関数と分解関数を提供できます。

ここでは to/from に移動したいので、 from パラメーターComputerを作成するメソッドと、Computerからパラメーターを抽出するメソッドが必要です。ComputerそれはまさにComputer.applyandComputer.unapplyです。

関連例:フォームに関する Play ドキュメントのマッピング例。

于 2013-01-29T23:14:25.083 に答える