"Category-6ren">
gpt4 book ai didi

playframework - 如何允许在@select 助手中选择默认值?

转载 作者:行者123 更新时间:2023-12-04 03:46:12 24 4
gpt4 key购买 nike

在我的表单中,我定义了一个下拉列表:

@select(
myForm("category_id"),
options(Category.options()),
'_label -> "Category",
'_default -> "-- Choose a Category --",
'_showConstraints -> false
)

在我的 Controller 代码中:
Form<Category> catForm = form(Category.class).bindFromRequest();
if(catForm.hasErrors()) {
return badRequest(categoryEdit.render(catForm));
}

表单提交不允许我选择默认值,如果我没有选择,则 catForm.hasErrors() 为 true。两个问题:
  • 如何允许在下拉列表中选择默认值?
  • 我希望默认值为 -1 ,在哪里设置呢? (也许这就是问题所在,没有与 -- Choose a Category -- 选项相关的值吗?)
  • 最佳答案

    aviks 的建议正在奏效。也许您没有正确导入模板。
    我是这样做的。首先我创建了一个 customSelectField.scala.html views/helper/正如 avik 建议的那样:

    @(field: play.api.data.Field, options: Seq[(String,String)], args: (Symbol,Any)*)(implicit handler: FieldConstructor, lang: play.api.i18n.Lang)

    @getAsTuple(x : Any) = @{
    x match {
    case (value: String, text: String) => (value, text)
    case _ => ("-1", "Select")
    }
    }

    @input(field, args:_*) { (id, name, value, htmlArgs) =>
    <select id="@id" name="@name" @toHtmlArgs(htmlArgs)>


    @args.toMap.get('_default).map { dv =>
    <option class="blank" value="@getAsTuple(dv)._1">@getAsTuple(dv)._2</option>
    }

    @options.map { v =>
    <option value="@v._1" @(if(value == Some(v._1)) "selected" else "")>@v._2</option>
    }
    </select>
    }

    然后在我的模板中,例如 index.scala.html 我想要选择的地方:
    @import helper._ 

    @helper.customSelectField(
    field = proposeNewTimeForm("selectTime"),
    options = times.get,
    '_label -> "Category",
    '_default -> ("-1" -> "-- Choose a category --"),
    '_showConstraints -> false
    )

    记住你应该 不是 做:
    @implicitField = @{
    FieldConstructor(helper.customSelectField.f)
    }

    因为这会导致你的错误。

    如果您想以某种方式格式化选择周围的 html,您可以像我一样做 customField.scala.html在 View /助手/:
    @(elements: helper.FieldElements)

    @elements.input
    <span class="errors">@elements.errors.mkString(", ")</span>
    <span class="help">@elements.infos.mkString(", ")</span>

    然后在 index.scala.html 的顶部:
    @import helper._
    @implicitField = @{
    FieldConstructor(helper.customField.f)
    }

    希望这可以帮助!

    关于playframework - 如何允许在@select 助手中选择默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16606490/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com