我正在遵循http://www.playframework.org/documentation/2.0/JavaForms上的教程。
我已经创建了一个名为LoginForm.java的类(不是用于持久化的User.class示例类,仅用于保存表单值) 。
在我的控制器中,我像示例一样执行操作,但是我将值设置为空字符串以尝试使用@Required注释。
我遇到了一个执行异常[[IllegalStateException: No value]]。
因此,它从未检查/到达。
有人知道这是为什么吗?如果我将值设置为示例中的值:
我已经创建了一个名为LoginForm.java的类(不是用于持久化的User.class示例类,仅用于保存表单值) 。
package domain;
import static play.data.validation.Constraints.*;
public class LoginForm {
@Required
public String email;
public String password;
}
在我的控制器中,我像示例一样执行操作,但是我将值设置为空字符串以尝试使用@Required注释。
Form<LoginForm> loginForm = form(LoginForm.class);
Map<String,String> anyData = new HashMap();
anyData.put("email", "");
anyData.put("password", "");
//Faking a post
LoginForm postedLoginForm = loginForm.bind(anyData).get();
if(loginForm.hasErrors()) {
//Just for this test task, should have another error handling..
return ok("@Required annotation kicked in..");
} else {
return ok("Got form values, email: " + postedLoginForm.email + " password: " + postedLoginForm.password);
}
但是在:
LoginForm postedLoginForm = loginForm.bind(anyData).get();
我遇到了一个执行异常[[IllegalStateException: No value]]。
因此,它从未检查/到达。
if(loginForm.hasErrors())
有人知道这是为什么吗?如果我将值设置为示例中的值:
Map<String,String> anyData = new HashMap();
anyData.put("email", "bob@gmail.com");
anyData.put("password", "secret");
一切都正常,我使用正确的值检索到了LoginForm对象。 我应该捕获异常吗?Play框架不应该处理并设置loginForm.hasErrors = true吗?
感谢任何帮助!