加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Play 2 – 如何从Java控制器设置模板参数的默认值?

发布时间:2020-12-15 00:47:17 所属栏目:Java 来源:网络整理
导读:在Play Framework 2中渲染 scala模板时是否可以定义可选参数? 我的控制器看起来像这样: public static Result recoverPassword() { FormRecoveryForm resetForm = form(RecoveryForm.class); return ok(recover.render(resetForm)); // On success I'd lik
在Play Framework 2中渲染 scala模板时是否可以定义可选参数?

我的控制器看起来像这样:

public static Result recoverPassword() {
    Form<RecoveryForm> resetForm = form(RecoveryForm.class);
    return ok(recover.render(resetForm));
    // On success I'd like to pass an optional parameter:
    // return ok(recover.render(resetForm,true));
}

我的Scala模板如下所示:

@(resetForm: Form[controllers.Account.RecoveryForm],success:Boolean = false)

还尝试过:

@(resetForm: Form[controllers.Account.RecoveryForm]) (success:Boolean = false)

在这两种情况下我都得到“错误:类恢复中的方法渲染不能应用于给定类型;”

解决方法

从Java控制器中你不能省略值的赋值(在Scala控制器或其他模板中它将起作用),在这种情况下最快和最干净的解决方案是每次使用默认值进行分配,即:
public static Result recoverPassword() {
    Form<RecoveryForm> resetForm = form(RecoveryForm.class);

    if (!successfullPaswordChange){
        return badRequest(recover.render(resetForm,false));
    }

    return ok(recover.render(resetForm,true));
}

Scala模板可以保持不变,因为Scala控制器和其他可以调用模板的模板将遵循默认值(如果没有在那里给出).

顺便说一句:正如你所看到的,你应该使用适当的方法从Play的动作返回结果,参见ok()vs badRequest():forrbiden(),notFound()等等

您还可以使用flash scope填充邮件,并在密码更改成功后使用redirect()到主页,然后您可以检查是否存在Flash消息并显示它:

public static Result recoverPassword() {
    ...
    if (!successfullPaswordChange){
        return badRequest(recover.render(resetForm,false));
    }

    flash("passchange.succces","Your password was reseted,check your mail");
    return redirect(routes.Application.index());
}

在任何模板中:

@if(flash.containsKey("passchange.succces")) {
    <div class="alert-message warning">
        <strong>Done!</strong> @flash.get("passchange.succces")
    </div>
}

(此片段是从Java的计算机数据库示例中复制的,因此您可以在自己的磁盘上进行检查)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读