【问题标题】:Play html form to submit a GET request with parameter播放 html 表单以提交带参数的 GET 请求
【发布时间】:2013-02-04 16:51:20
【问题描述】:

我有一个 play GET 路由,如何以 scala html 形式使用它?

路线

GET  /service/register  controllers.WebRegister.register(plan?="")

scala html

@form(action = routes.WebRegister.register, 'style -> "width: 320px;") {
       <fieldset>
           <input type="hidden" name="plan" value="FREE" id="plan">
       </fieldset>
       <div class="form-actions plan-form peer-btn-center peer-m-v-t">
            <input type="submit" data-icon='&#xe6660;' class="btn btn-primary btn-large" value="Sign Up">
       </div>
}

它给了我一个错误:

ReverseWebRegister 类中的方法寄存器缺少参数; [错误] 如果您想将其视为 部分应用函数

【问题讨论】:

    标签: playframework-2.0


    【解决方案1】:

    您不需要传递它两次(通过路由参数和表单的隐藏字段),因此您有两种解决方案:仅使用路由参数:

    路由的参数

    路线

    GET  /service/register  controllers.WebRegister.register(plan: String?="")
    

    模板

    @form(action = routes.WebRegister.register("free")) {
       <input type="submit">
    }
    

    当然,如果你只有这一个字段,你可以直接使用链接:

    <a href='@routes.WebRegister.register("free")'>Register free</a>
    

    java 动作

    public static Result register(String plan) {
        return ok(plan);
    }
    

    仅限表单字段

    从路由中删除参数并从控制器中的请求中绑定字段:

    路线

    GET  /service/register  controllers.WebRegister.register
    

    模板

    @form(action = routes.WebRegister.register) {
       <input type="hidden" name="plan" value="free">
       <input type="submit">
    }
    

    java 动作

    public static Result register() {
        return ok(form().bindFromRequest().get("plan"));
    }
    

    【讨论】:

    • 我尝试了Route的论证方式。但是,它会打开 /service/register 吗?而不是 /service/register?plan=free。我检查了生成的表单 html 源代码,它的值正确(action="/service/register?plan=free")。
    • 我在回答之前尝试了所有可能性,controllers.WebRegister.register(plan: String?="") -> /service/register?plan=free 按预期工作,尝试更好地描述,出了什么问题。
    • 这是我生成的html结果。单击时,它转到xxx/service/register
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多