【问题标题】:playframework - how to set a select input in scalaplayframework - 如何在scala中设置选择输入
【发布时间】:2012-11-02 12:16:36
【问题描述】:

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

我有以下用于生成选择的 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,然后将其转换为服务器上的代码。我希望能够正确地做到这一点,但它似乎不起作用。

【问题讨论】:

  • interface.Name == configs.last.networkInterfaceName 的条件下,您比较相同的数据类型?如果是String - 也许试试firstString.contentEquals(secondString)

标签: scala playframework playframework-2.0


【解决方案1】:

&lt;select id="networkInterfaces"&gt; 没有指定 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

【讨论】:

  • Thx jmuok,目前我的选择正在显示正确的信息,但是当它加载时,值被设置为标签而不是值。您的 select 语句是否还会在加载时选择一个选项?
  • 是的,默认会选择当前表单值。
  • form("configs.last.networkInterfaceName") 试图在此处放置字段名称的字符串失败,这应该是可调用的,但什么是可调用的?
【解决方案2】:

试试这个方法。

    <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;
}

这对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 2021-03-19
    • 2020-08-17
    相关资源
    最近更新 更多