Java Play Framework 2.5使用POST方法提交表单错误

Java Play Framework 2.5使用POST方法提交表单错误,java,forms,post,playframework-2.5,Java,Forms,Post,Playframework 2.5,我有新的游戏框架2.5。我正在使用Java中的Play。创建了一个普通的HTML表单,并希望使用POST方法提交表单,但它抛出了错误。我用谷歌搜索了很多次,但没有成功 路线: POST /output controllers.HomeController.result HTML代码: <form name="form1" action="/output" method="post"> <div id="content">

我有新的游戏框架2.5。我正在使用Java中的Play。创建了一个普通的HTML表单,并希望使用POST方法提交表单,但它抛出了错误。我用谷歌搜索了很多次,但没有成功

路线:

POST     /output     controllers.HomeController.result
HTML代码:

    <form name="form1" action="/output" method="post">
        <div id="content">
            <label>Enter Sentence/Paragraph.</label></br>
            <textarea id="para" name="para" rows="15" cols="100"></textarea></br>
            <input id="submit_btn" name="submit_btn" type="submit" value="Submit" />
        </div>
    </form>
package controllers;

import com.google.inject.Inject;
import play.data.DynamicForm;
import play.data.FormFactory;
import play.mvc.Controller;
import play.mvc.Result;
import views.html.index;
import views.html.output;.

public class HomeController extends Controller {

    @Inject
    FormFactory formFactory;

    public Result index() {
        return ok(index.render("NLP Pipeline."));
    }

    public Result result() {
        DynamicForm requestData = formFactory.form().bindFromRequest();
        System.out.println("form: " + requestData.get("para"));
        return ok();
    }

}
Unexpected exception
ProvisionException: Unable to provision, see the following errors:

1) Error injecting constructor, java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.getMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
  at play.data.format.Formatters.<init>(Formatters.java:31)
  at play.data.format.FormattersModule.bindings(FormattersModule.java:18):
Binding(class play.data.format.Formatters to self) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
  while locating play.data.format.Formatters
    for parameter 1 at play.data.FormFactory.<init>(FormFactory.java:25)
  at play.data.FormFactoryModule.bindings(FormFactoryModule.java:17):
Binding(class play.data.FormFactory to self) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
  while locating play.data.FormFactory
    for field at controllers.HomeController.formFactory(HomeController.java:16)
  while locating controllers.HomeController
    for parameter 1 at router.Routes.<init>(Routes.scala:32)
  while locating router.Routes
  while locating play.api.inject.RoutesProvider
  while locating play.api.routing.Router
    for parameter 0 at play.api.http.JavaCompatibleHttpRequestHandler.<init>(HttpRequestHandler.scala:200)
  while locating play.api.http.JavaCompatibleHttpRequestHandler
  while locating play.api.http.HttpRequestHandler
    for parameter 4 at play.api.DefaultApplication.<init>(Application.scala:221)
  at play.api.DefaultApplication.class(Application.scala:221)
  while locating play.api.DefaultApplication
  while locating play.api.Application

1 error
错误:

    <form name="form1" action="/output" method="post">
        <div id="content">
            <label>Enter Sentence/Paragraph.</label></br>
            <textarea id="para" name="para" rows="15" cols="100"></textarea></br>
            <input id="submit_btn" name="submit_btn" type="submit" value="Submit" />
        </div>
    </form>
package controllers;

import com.google.inject.Inject;
import play.data.DynamicForm;
import play.data.FormFactory;
import play.mvc.Controller;
import play.mvc.Result;
import views.html.index;
import views.html.output;.

public class HomeController extends Controller {

    @Inject
    FormFactory formFactory;

    public Result index() {
        return ok(index.render("NLP Pipeline."));
    }

    public Result result() {
        DynamicForm requestData = formFactory.form().bindFromRequest();
        System.out.println("form: " + requestData.get("para"));
        return ok();
    }

}
Unexpected exception
ProvisionException: Unable to provision, see the following errors:

1) Error injecting constructor, java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.getMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
  at play.data.format.Formatters.<init>(Formatters.java:31)
  at play.data.format.FormattersModule.bindings(FormattersModule.java:18):
Binding(class play.data.format.Formatters to self) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
  while locating play.data.format.Formatters
    for parameter 1 at play.data.FormFactory.<init>(FormFactory.java:25)
  at play.data.FormFactoryModule.bindings(FormFactoryModule.java:17):
Binding(class play.data.FormFactory to self) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
  while locating play.data.FormFactory
    for field at controllers.HomeController.formFactory(HomeController.java:16)
  while locating controllers.HomeController
    for parameter 1 at router.Routes.<init>(Routes.scala:32)
  while locating router.Routes
  while locating play.api.inject.RoutesProvider
  while locating play.api.routing.Router
    for parameter 0 at play.api.http.JavaCompatibleHttpRequestHandler.<init>(HttpRequestHandler.scala:200)
  while locating play.api.http.JavaCompatibleHttpRequestHandler
  while locating play.api.http.HttpRequestHandler
    for parameter 4 at play.api.DefaultApplication.<init>(Application.scala:221)
  at play.api.DefaultApplication.class(Application.scala:221)
  while locating play.api.DefaultApplication
  while locating play.api.Application

1 error
意外异常
ProvisionException:无法设置,请查看以下错误:
1) 注入构造函数java.lang.NoSuchMethodError时出错:org.springframework.util.ClassUtils.getMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
play.data.format.Formatters.(Formatters.java:31)
play.data.format.FormattersModule.bindings(FormattersModule.java:18):
绑定(类play.data.format.Formatters到self)(通过模块:com.google.inject.util.modules$OverrideModule->play.api.inject.guice.GuiceableModuleConversions$$anon$1)
查找play.data.format.Formatters时
用于play.data.FormFactory中的参数1。(FormFactory.java:25)
play.data.FormFactoryModule.bindings(FormFactoryModule.java:17):
绑定(类play.data.FormFactory到self)(通过模块:com.google.inject.util.modules$OverrideModule->play.api.inject.guice.GuiceableModuleConversions$$anon$1)
查找play.data.FormFactory时
用于controllers.HomeController.formFactory(HomeController.java:16)中的字段
查找控制器时。HomeController
用于router.Routes处的参数1。(Routes.scala:32)
定位路由器时。路由
查找play.api.inject.routeProvider时
查找play.api.routing.Router时
用于play.api.http.JavaCompatibleHttpRequestHandler处的参数0。(HttpRequestHandler.scala:200)
查找play.api.http.JavaCompatibleHttpRequestHandler时
查找play.api.http.HttpRequestHandler时
用于play.api.DefaultApplication中的参数4。(Application.scala:221)
at play.api.DefaultApplication.class(Application.scala:221)
查找play.api.DefaultApplication时
查找play.api.Application时
1错误

我想使用普通的HTML表单使用POST方法提交请求。有什么帮助吗?

我有答案的解决方案

我们可以通过

final Map<String, String[]> form_values = request().body().asFormUrlEncoded();
final Map form_values=request().body().asFormUrlEncoded();
然后通过以下方式获取表单名称参数值

form_values.get("<key_name>")[0];
form_values.get(“”[0];

我有答案的解决方案

我们可以通过

final Map<String, String[]> form_values = request().body().asFormUrlEncoded();
final Map form_values=request().body().asFormUrlEncoded();
然后通过以下方式获取表单名称参数值

form_values.get("<key_name>")[0];
form_values.get(“”[0];

为什么不在html代码中使用帮助程序呢

@import helper._

@form(my.controller.method.handling.post(param)) {
    <div id="content">
        <label>Enter Sentence/Paragraph.</label></br>
        <textarea id="para" name="para" rows="15" cols="100"></textarea></br>
        <input id="submit_btn" name="submit_btn" type="submit" value="Submit" />
    </div>
}

更容易处理表单对象,而无需处理类型转换等(请参阅上的播放文档)

为什么不在html代码中使用帮助程序?使用

@import helper._

@form(my.controller.method.handling.post(param)) {
    <div id="content">
        <label>Enter Sentence/Paragraph.</label></br>
        <textarea id="para" name="para" rows="15" cols="100"></textarea></br>
        <input id="submit_btn" name="submit_btn" type="submit" value="Submit" />
    </div>
}

更容易处理表单对象,而无需处理类型转换等(请参阅上的播放文档)

这对我来说也很有效。谢谢iNikkz。这是一场噩梦。这对我也很有效。谢谢iNikkz。这是一场噩梦。