2

所以我在页面上有一个表单,我试图在页面加载时预加载所有旧值。但是我在为选择对象实现这一点时遇到了一些麻烦。

我有以下用于生成选择的 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指定的正确吗?

而不是你应该使用播放助手@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 回答