3

私はPlay2.0.4を使用しています

helper.options(myitems)

テンプレート内(helper.select内)

この場合、デフォルトで選択されたエントリをどのように定義できますか?これは、そのうちの1つのエントリになりmyitemsますか?ヒントをありがとう!

私の場合についてもう少し:

すべてのニュースタイトルを表示するニュースアーカイブを想像してみてください。このニュースアーカイブはページネーションを使用し、ページネーションはGETを使用して次/前のページ番号を渡します。

ただし、Play Frameworkは、POSTリクエストが使用された場合にのみ、現在選択されている「選択」アイテム(ここではニュースカテゴリ)を正しく選択します-ページネーションはGET!を使用します。

意図された動作:フィルターが適用されている/特定のニュースカテゴリが選択されている間、これは「選択」フォームで現在選択されているニュースカテゴリを事前に選択することで常にユーザーに表示されます。

説明のための「スクリーンショット」:

ここに画像の説明を入力してください

それで、この問題に対処する方法について良いアイデアを持っている人はいますか?「選択」フォームからどのエントリを選択するかを手動でPlayに指示する方法はありますか?'_defaultは、指定されたオプションから1つを選択する代わりに、常に新しいエントリを追加します):完全な「選択」フォームを手動で作成する必要がない場合は、すばらしいでしょう。

4

4 に答える 4

3

'_defaultオプションをselectヘルパーに渡してみてください:

@import views.html.helper._

@select(form("email"), options(List("first", "third")), '_default -> "second")

残念ながら、それを理解する唯一の方法はソースを調べることだと思われます。

アップデート:

プロパティを指定しても、タグに属性_defaultは設定されません。エントリを事前に選択する唯一の方法は、事前に入力されたフォームをテンプレートに渡すことです。たとえば、次のフォームがあるとします。selectedoption

case class RegInfo(email: String, color: String)

private val registrationForm = Form(
  mapping(
    "email"    → email,
    "color"    → nonEmptyText(minLength = 5, maxLength = 32)
  )(RegInfo.apply)(RegInfo.unapply)
)

次に、ビューに渡す前に、アクションの事前入力フォームで次のようにします。

def create = Action {
  Ok(html.create(registrationForm.fill(RegInfo("user@qwe.com", "blue"))))
}

次に、テンプレートでヘルパーを使用します。

@select(form("color"), options(List("red", "green", "blue")))

そして、値は事前に選択されます。

于 2012-12-29T16:07:03.840 に答える
0

実用的なアプローチで終わった:

<select id="myfield" name="myfield" >

    <option class="blank" value="">-- All items --</option>

    @for((key, value) <- MyModel.options) {

        @if(key == GETValuePassedToTemplate) {
            <option value="@key" selected>@value</option>   
        } else {
            <option value="@key">@value</option>                            
        }
    }

</select>   

それを行うためのより良いオプション/方法があるかどうか、まだ疑問に思っています。

于 2012-12-31T12:35:30.710 に答える
0

それを行うためのより良いオプション/方法があるかどうか、まだ疑問に思っています。

Play を使用してこの特定の問題を解決することに熱心でない場合は、JavaScript と jQuery を使用していつでも解決できます。

$(function () {    
    $('#yourSelect_id').val(5);
}

選択オプションにはそれぞれ値があり、事前に選択したいオプションの値は 5 です。

于 2014-09-10T08:56:59.487 に答える
0

実は、もっと良い解決策があります。フォームが部分的にバインドされたテンプレートを呼び出すと、目標を達成できます。コントローラーのコードは次のとおりです。

Ok(views.html.myForm(myForm.bind(
             Map("fieldName1" -> "value1",
                 "fieldName2" -> "value2"))))

あらかじめ選択したいvalueの にフィールド名をマッピングしてください。option

于 2013-03-10T00:39:05.697 に答える