2

そのため、ページにフォームがあり、ページが読み込まれたときに古い値をすべてプリロードしようとしています。しかし、selectオブジェクトでこれを実現するのに問題があります。

selectを生成するための次のscalaコードがあります。

<select id="networkInterfaces">
            <option value="">First Available</option>
            @for(interface <- networkInterfaces) {
                @if(interface.Name == configs.last.networkInterfaceName) {
                    <option selected="selected" value="@interface.Name">@interface.DisplayName</option>
                } else {
                    <option value="@interface.Name">@interface.DisplayName</option>
                }
            }
        </select>

また、ページが読み込まれると、選択したネットワークインターフェイスが選択されていることが示されます。しかし、問題は、他の設定のいくつかを変更して送信すると、値ではなくオプションのhtmlが返されることです。ページの読み込み中にScalaでselectのフォーム値を選択する方法はありますか?私が見逃している基本的なものはありますか?それ以外の場合は、値ではなく表示名を処理するように処理する方法を変更します...

編集

これを機能させることができなかったので、値を@ interface.DisplayNameに変更してから、サーバー上のコードに変換しました。きちんとやりたいのですが、うまくいかないようです。

4

2 に答える 2

6

<select id="networkInterfaces">指定がないのは正しいnameですか?

Playヘルパー@selectFormオブジェクトを使用する必要があります。フォームの値を処理するより良い方法だと思います。

@(form : Form[ABean])
@import helper._

@select(
form("configs.last.networkInterfaceName"),
options(networkInterfaces),
'_label -> "Interface Name",
'_default -> "First Available"
)

ヘルパーの@select訪問に関する詳細情報: https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/views/helper/select.scala.html

于 2012-11-01T17:45:32.097 に答える
1

この方法を試してください。

    <input type="hidden" id="groupIdRef" name="groupIdRef" value="@userRecord.groupId">
    @input(field=userRecordform("groupId"),'_label -> "") { (id, name, value, htmlArgs) =>
        <select id="groupId" name="groupId" @toHtmlArgs(htmlArgs)>
            options.map { v =>
                @for(g <- groups){
                  <option value=@g.id >@g.displayName</option>
                }
            }
        </select>
    } 


// User JavaScript this onload function
window.onload = function() {    
document.getElementById('groupId').value = document.getElementById('groupIdRef').value;
}

それは私にとって仕事です。

于 2012-11-02T04:16:36.880 に答える