0

入力フォームを作成しました。ユーザーが値を送信し、検証に合格しなかった場合、ユーザーから元の値を取得して表示するにはどうすればよいですか?「フィールドが必要です」という検証エラーメッセージが正しく表示されます。入力フォームに戻り、検証エラーが表示されますが、ユーザーが入力した値は保存されません。

モデル

@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}
4

1 に答える 1

1

これを呼び出すとParams.flash、フォームで送信した値がフラッシュCookieに追加されます。したがって、あなたの見解では、次のようなことを行うことで値にアクセスします

フォームフィールドの値を取得するためにフラッシュが使用される場所に特に注意してください。

#{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}
于 2012-09-01T08:00:11.293 に答える