Java bindFromRequest()在play framework 2.0中不工作。表单值始终为空
问题是,我无法在PlayFramework2.0中读取提交表单中的值。该值始终为空 这是我的密码: 我的模型文件 my index.scala.html my Application.javaJava bindFromRequest()在play framework 2.0中不工作。表单值始终为空,java,playframework,playframework-2.0,Java,Playframework,Playframework 2.0,问题是,我无法在PlayFramework2.0中读取提交表单中的值。该值始终为空 这是我的密码: 我的模型文件 my index.scala.html my Application.java 公共静态结果索引(){ 纸张=新纸张(); paper.query=“初始值”; 表单paperForm=表单。表单(纸。类)。填写(纸); 返回ok(索引渲染(纸质); } 公共静态结果newPaper(){ Form paperForm=Form.Form(Paper.class).bindFromR
公共静态结果索引(){
纸张=新纸张();
paper.query=“初始值”;
表单paperForm=表单。表单(纸。类)。填写(纸);
返回ok(索引渲染(纸质);
}
公共静态结果newPaper(){
Form paperForm=Form.Form(Paper.class).bindFromRequest();
如果(!paperForm.hasErrors()){
Paper Paper=paperForm.get();
Logger.info(“query=“+paper.query”);//为什么我总是得到“query=null”???
}
返回重定向(routes.Application.index());
}
当我访问html页面时,在文本输入框中看不到“初始值”。当我填写输入框并单击提交按钮时,打印的日志始终为:query=null
我还使用ChromeDevTool进行了监控。我看到发送了post http请求。但最终状态代码是303,而不是200
如果我在newPaper()中使用DynamicForm来处理提交的表单,那么我可以按预期读取查询值。但是为什么当前代码不起作用呢
谢谢您的帮助!您还需要在带有value post的表单标记中指定method属性。但是helper方法不支持method属性。所以请这样做
@(myform: Form[model.Paper])
<form method="POST" action ="@routes.Application.newPaper()">
query: @helper.inputText(myform("query")) <br><br>
<br><input type="submit">
</form>
@(myform:Form[model.Paper])
查询:@helper.inputText(myform(“查询”))
我使用了表单工厂
而不是表单
在myApplication.java
中为bindFormRequest
添加.withDirectFieldAccess(true);
因此,您的代码应该是:
Form<Paper> paperForm = Form.form(Paper.class).bindFromRequest().withDirectFieldAccess(true);
formpaperform=Form.Form(Paper.class).bindFromRequest().withDirectFieldAccess(true);
而不是:
Form<Paper> paperForm = Form.form(Paper.class).bindFromRequest();
formpaperform=Form.Form(Paper.class).bindFromRequest();
通过这个你可以得到所有的字段。
您可以在此链接上找到更多帮助-
方法
属性由操作
属性中使用的路由
确定,无需手动使用。最好在调试工具的网络选项卡中检查它调用的方法。我之前也遇到过同样的问题,默认情况下它使用GET方法进行调用。我监控了http请求并确认了它正在发送POST请求。但最终状态代码是303。不确定为什么状态代码不是200?如果再次给出303,请在action属性中指定值“/newkey”,而不是反向路由。然后与一些rest客户端(如POSTMAN)一起尝试此API。请让我知道结果,也许我可以进一步帮助您。
public static Result index() {
Paper paper = new Paper();
paper.query = "initial value";
Form<Paper> paperForm = Form.form(Paper.class).fill(paper);
return ok(index.render(paperForm);
}
public static Result newPaper() {
Form<Paper> paperForm = Form.form(Paper.class).bindFromRequest();
if (!paperForm.hasErrors()) {
Paper paper = paperForm.get();
Logger.info("query= " + paper.query); //why I always get "query= null" ???
}
return redirect(routes.Application.index());
}
@(myform: Form[model.Paper])
<form method="POST" action ="@routes.Application.newPaper()">
query: @helper.inputText(myform("query")) <br><br>
<br><input type="submit">
</form>
Form<Paper> paperForm = Form.form(Paper.class).bindFromRequest().withDirectFieldAccess(true);
Form<Paper> paperForm = Form.form(Paper.class).bindFromRequest();