2012-08-31 13 views
0

我已經創建了一個輸入表單。當用戶提交值並且未通過驗證時,如何從用戶獲取原始值以顯示?我可以正確地看到驗證錯誤消息指出「字段是必需的」。它轉發回輸入表單並顯示驗證錯誤,但它不保存用戶輸入的值。Play框架驗證:重新顯示輸入

示範

@Entity 
public class Question extends BaseModel { 

    @Required 
    @MaxSize(100) 
    public String title; 
    @Required 
    @MaxSize(5000) 
    public String txt; 
} 

的控制器

public class Questions extends Controller { 

    public static void ask() { 
     Question question = new Question(); 
     render(question); 
    } 

    public static void addQuestion(Question question) { 
     // save question 
     if (!question.validateAndSave()) { 
      params.flash(); 
      Validation.keep(); 
      ask();    
     } 
     Application.index(); 
    } 
} 

視圖

#{form @exchange.Questions.addQuestion()} 

    <label class="control-label" for="question.title">Question Title</label> 
    <input type="text" class="input-large" name="question.title" value="${question.title}" /> 
    #{if errors.forKey('question.title')}<span class="alert-error"> #{error 'question.title'/}</span> #{/if} 

    <label class="control-label" for="question.txt">Details</label> 
    <textarea class="input-xxlarge span7" rows="6" name="question.txt">${question.txt}</textarea> 
    #{if errors.forKey('question.txt')}<br/><span class="alert-error"> #{error 'question.txt'/}</span> #{/if} 
    <button type="submit" class="btn btn-primary">Ask Question</button> 

#{/form} 

回答

1

當你調用Params.flash這會增加你的形式提交到Flash cookie的值。因此,在您看來,您可以通過執行以下操作來訪問這些值:

請特別注意使用flash來獲取表單字段的值。

#{ifErrors} 
    <h1>Oops...</h1> 
#{/ifErrors} 

#{form @Application.hello()} 
    <div> 
     Name: <input type="text" name="name" value="${flash.name}" /> 
     <span class="error">#{error 'name' /}</span> 
    </div> 
    <div> 
     Age: <input type="text" name="age" value="${flash.age}" /> 
     <span class="error">#{error 'age' /}</span> 
    </div> 
    <div> 
     <input type="submit" value="Say hello" /> 
    </div> 
#{/form} 
+0

我不得不最終做'$ {flash_'question.title']}'和'$ {flash ['question.txt']}''。然後顯示原始輸入。 – Ryan