2012-08-31 2 views
0

입력 양식을 만들었습니다. 사용자가 값을 제출하고 유효성 검사를 통과하지 못하면 사용자의 원래 값을 표시하려면 어떻게해야합니까? 유효성 검사 오류 메시지가 "필드가 필요합니다"라고 올바르게 표시됩니다. 입력 양식으로 다시 전달하고 유효성 검증 오류를 표시하지만 사용자가 입력 한 값은 저장하지 않습니다.Play Framework 유효성 검사 : 다시 표시 입력

모델

@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(); 
    } 
} 

당신이 Params.flash를 호출 할 때

#{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

이 당신이 플래시 쿠키로 형태로 제출 된 값을 추가합니다보기. 보기에서 다음과 같은 작업을 수행하여 값에 액세스합니다.

양식 필드의 값을 가져 오는 데 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