2016-11-23 6 views
0

実際にフォームを処理した後に投稿し、情報が処理され、エラーが発生した場合に新しい情報でページをリフレッシュすることなくフラッシュを返します。フォームが有効な場合は、たとえば別のページを参照します。PlayFramework - リフレッシュページなしでメッセージを表示

私は短時間前に自分自身をウェブに載せました。私は、ページを完全にリフレッシュせずにページ上の情報をリフレッシュすることは、将来的には役立つと思います。

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." 
    ); 
} 

感謝。

+0

フォームを送信するためのJavaScriptコードを投稿できますか? –

+0

現時点では、私はjavascript側のために何もしていない、juste html <-> PlayFramework。私は、再生フレームワークで動作するコードのサンプルを検索します:) –

答えて

0

入力を確認する関数を使用して、すべてがOKならフォームを送信できます。

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

ボタンをクリックしたときに発生するアクションなど、最小限のバージョンのコードを示した場合に役立ちます。

+0

私はlamda検証、電子メールの検証、最小限のチェックを行っていますが、私はjavascriptで検証したくありません!バックエンド側にいくつかのコードがあります。 –

+0

私の投稿を編集しました! :) –

+1

その場合、私はあなたを助けることができない恐れがあります、申し訳ありません。 –

関連する問題