
不幸的是,当我提交表单并且验证失败时,我得到一个可能是游戏错误的IllegalStateException(但我想确认).
请在下面找到相关的代码摘录和问题描述(为了清晰起见,只有相关部分)
部分控制器代码(接收表单提交)
public static Result save() { Form<UserForm> userForm = form(UserForm.class).bindFromrequest(); if (userForm.hasErrors()) { return badRequest(createform.render(userForm)); } UserForm user = userForm.get(); 验证器声明为
public class FIEldMatchValIDator extends ValIDator<Object> implements ConstraintValIDator<FIEldMatch,Object>
验证注释声明为
@Target({TYPE,ANNOTATION_TYPE})@Retention(RUNTIME)@Constraint(valIDatedBy = FIEldMatchValIDator.class)@play.data.Form.display(name="constraint.fIEldmatch")public @interface FIEldMatch { String message() default FIEldMatchValIDator.message; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; 提交表单我收到错误
Caused by: java.lang.IllegalStateException: No value at play.libs.F$None.get(F.java:217) ~[play_2.9.1.jar:2.0.1] at play.data.Form.get(Form.java:363) ~[play_2.9.1.jar:2.0.1] at controllers.UsersController.save(UsersController.java:40) ~[classes/:2.0.1] at Routes$$anonfun$routes$$anonfun$apply$$anonfun$apply.apply(routes_routing.scala:189) ~[classes/:na] at Routes$$anonfun$routes$$anonfun$apply$$anonfun$apply.apply(routes_routing.scala:189) ~[classes/:na] at play.core.Router$HandlerInvoker$$anon$$anon.invocation(Router.scala:1086) ~[play_2.9.1.jar:2.0.1]
提到的UsersController的行是调用UserForm user = userForm.get();
试图了解问题所在,我发现有问题的代码可能在play的Form.java中.
Form绑定(Map data,String … allowedFIElds)包含:
if(result.hasErrors()) { for(FIEldError error: result.getFIEldErrors()) { ... }return new Form(rootname,backedType,data,errors,None());} 并且hasErrors()是
public boolean hasErrors() { return !errors.isEmpty();} 结果是result.hasErrors()返回true(因为在类级别定义的验证器失败),但构建的错误列表仍为空(result.getFIEldErrors()返回一个空列表).
因此,Form.hasErrors()返回false但Form.get()失败.
我错过了什么或者它实际上是一个错误?
感谢致敬,
解决方法 这是一个游戏中的错误.如果表单实现了valIDate,则确保只要没有错误,该方法就返回null.如果您返回空地图,那么它将失败 总结以上是内存溢出为你收集整理的表单验证后的Playframework IllegalStateException全部内容,希望文章能够帮你解决表单验证后的Playframework IllegalStateException所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)