PlayFramework - 显示没有刷新页面的消息

时间:2016-11-23 14:08:10

标签: javascript playframework partial-page-refresh twirl

事实上,我会在处理完一个表单之后发布,处理信息并返回一个闪存,而不会在出现故障时用新信息刷新页面。如果表单有效,那么我会引用另一个页面。

我不久前把自己放在网上。我认为在没有完全刷新页面的情况下刷新页面上的信息将来会很有用。

I have a video in order to illustrate what i'm saying.

  

如果您有代码示例,我会:D

代码(可选阅读):

Html:

@module.note.render(PanelType.DANGER, "contact")
<form id="submit" class="submit-form" method="post" action="@routes.SupportController.postSupport()">

    <div class="row">
        <div class="col-md-6 col-sm-12">
            <label class="control-label">Votre nom</label>
            <input type="text" class="form-control" name="lastName" placeholder="">
        </div>
    ...
    <div class="row">
        <div class="col-md-12 col-sm-12">
            <label class="control-label">Votre message</label>
            <p>
                <textarea id="content" name="content" placeholder="Ecrivez votre message ici"></textarea>
                <script type="text/javascript">
                        CKEDITOR.replace('content');
                </script>
            </p>
        </div>
    </div> <!-- end row -->

    <hr class="invis">

    <button type="submit" class="btn btn-primary">Envoyer !</button>
</form>

postSupport()函数:

@Http.Post
    public Result postSupport()
    {
        DynamicForm d = form.form().bindFromRequest();
        FormChecker errors = new Support().getErrors(new FormValidator(d));
        List<String> check = errors.check();
        if(check != null && !check.isEmpty())
        {
            flash("contact", check.get(0));
            return index();
        }
        Support support = new Support(d.get("lastName"), d.get("email"), d.get("content"), d.get("subject"), d.get("website"), d.get("department"));
        support.insert();
        return supportList();
    }

getErrors()函数:

@Override
public FormChecker getErrors(FormValidator f)
{
    return new FormChecker(f,
            x -> x.validate("lastName", "content", "email", "subject", "website", "department"),
            x -> x.isValidEmail("email"),
              x -> x.isValidUrl("website"),
            x -> x.isValidMinbLenght(5, "subject")
                ? "" : "Le sujet doit avoir une longueur minimum de 5 caractères.",
            x -> x.isValidMinbLenght(30, "content")
                ? "" : "Le contenu du rapport doit faire minimum 30 caractères.",
            x -> x.isValidMinbLenght(3, "lastName")
                ? "" : "Votre nom doit avoir une longueur minimum de 5 caractères.",
            x -> new SupportDepartment().get("department", x.get("department")) != null
                ? "" : "Le département n'éxiste pas."
    );
}

非常感谢你。

1 个答案:

答案 0 :(得分:0)

您可以使用函数检查输入,然后如果一切正常,请发送表单。

function check(){
   if(arguments are valid) sendResults();
   else showErrors;
}

如果你展示了最低版本的代码,那会很有帮助,例如点击按钮时会触发什么动作。