Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 播放框架验证:重新显示输入_Java_Error Handling_Playframework_Playframework 1.x - Fatal编程技术网

Java 播放框架验证:重新显示输入

Java 播放框架验证:重新显示输入,java,error-handling,playframework,playframework-1.x,Java,Error Handling,Playframework,Playframework 1.x,我已经创建了一个输入表单。当用户提交值但未通过验证时,如何从用户处获取原始值以显示?我可以正确地看到“字段为必填项”的验证错误消息。它转发回输入表单并显示验证错误,但不保存用户输入的值 模型 @Entity public class Question extends BaseModel { @Required @MaxSize(100) public String title; @Required @MaxSize(5000) public St

我已经创建了一个输入表单。当用户提交值但未通过验证时,如何从用户处获取原始值以显示?我可以正确地看到“字段为必填项”的验证错误消息。它转发回输入表单并显示验证错误,但不保存用户输入的值

模型

@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}
#{form@exchange.Questions.addQuestion()}
题目
#{if errors.forKey('question.title')}{error'question.title'/}{/if}
细节
${question.txt}
#{if errors.forKey('question.txt')}
{error'question.txt'/}{/if} 提问 #{/form}
当您调用
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}
{iferror}
哎呀。。。
#{/iferros}
#{form@Application.hello()}
姓名:
#{错误'name'/}
年龄:
#{错误'age'/}
#{/form}

我最后不得不做
${flash['question.title']}
${flash['question.txt']}
。然后原始输入显示出来。