Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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 play框架中post请求中的表单值为空_Java_Forms_Jsp_Playframework_Playframework 2.0 - Fatal编程技术网

Java play框架中post请求中的表单值为空

Java play框架中post请求中的表单值为空,java,forms,jsp,playframework,playframework-2.0,Java,Forms,Jsp,Playframework,Playframework 2.0,我使用html发回表单,如下所示: @(message: String) @main("Contact") { <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/contact.css")"> <div id="pageContainer"> <div id="form"> <div id="topText">

我使用html发回表单,如下所示:

@(message: String)

@main("Contact") {
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/contact.css")">
<div id="pageContainer">
    <div id="form">
        <div id="topText">
            <p>Have a question or need some assistance? Let us know and we'll get back to you ASAP.</p>
        </div>
        <br/>
        <form method="POST" action="@routes.Home.contact()">

            <div id="contactInfo">
                <label class="contactLabel">First Name:</label><input type="text" name="firstName" id="firstName" class="contactInput" /> <br />
                <label class="contactLabel">Last Name:</label><input type="text" name="lastName" id="lastName" class="contactInput" /> <br />
                <label class="contactLabel">Email:</label><input type="text" name="email" id="email" firstName" class="contactInput" /> <br />
                <label class="contactLabel">Company:</label><input type="text" id="company" name="company" class="contactInput" /> <br />
                <input type="hidden" id="hidden" name = "hidden"></input>
                <p id="crap">@message</p>
            </div>
            <br/>
            <div id="message">
                <label class="contactLabel">Message:</label><textarea cols="50" rows="10"></textarea>
            </div>
            <input type="submit" name="submit" id="submit" value="Submit"></input>
            </form>
    </div>

</div>

}
public static Result contact()
{

    //Map<String,String[]> values = request().body();
    DynamicForm form = form().bindFromRequest();
    String first = "";
    if(form.data().get("firstName") != null)
    first = form.data().get("firstName").toString();

    return ok(views.html.contact.render(first));
}
@(消息:字符串)
@主要(“联系人”){
有问题或需要帮助吗?请告诉我们,我们会尽快回复您


名字:
姓氏:

电子邮件:以下是我将如何做到这一点:

模板

@(message: String, contactForm: Form[Contact])

@import helper._

@main("Contact") {
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/contact.css")">
<div id="pageContainer">
    <div id="form">
        <div id="topText">
            <p>Have a question or need some assistance? Let us know and we'll get back to you ASAP.</p>
        </div>
        <br/>
        @form(routes.Home.contact()) {
            <div id="contactInfo">
                <label class="contactLabel">First Name:</label> @inputText(contactForm("firstName"), 'class -> "contactInput"') <br />
                <label class="contactLabel">Last Name:</label> @inputText(contactForm("lastName"), 'class -> "contactInput"') <br />
                <label class="contactLabel">Email:</label> @inputText(contactForm("email"), 'class -> "contactInput"') <br />
                <label class="contactLabel">Company:</label> @inputText(contactForm("company"), 'class -> "contactInput"') <br />
                <input type="hidden" id="hidden" name="hidden"></input>
                <p id="crap">@message</p>
            </div>
            <br/>
            <div id="message">
                <label class="contactLabel">Message:</label><textarea cols="50" rows="10"></textarea>
            </div>
            <input type="submit" value="Submit" />
        }
    </div>
</div>
}
控制器

public static Result contact() {
    Form<Contact> contactForm = form(Contact.class).bindFromRequest();
    if (contactForm.hasErrors()) {
        // process
    } else {
        // contactForm.get().firstName should be filled with the correct data
        return ok(views.html.contact.render("message", contactForm)); 
    }
}
公共静态结果联系人(){
Form contactForm=Form(Contact.class).bindFromRequest();
if(contactForm.hasErrors()){
//过程
}否则{
//contactForm.get().firstName应填写正确的数据
返回ok(views.html.contact.render(“message”,contactForm));
}
}
对你有用吗? 您应该查看有关以下主题的Play2文档:

  • 编辑

    public class Contact {
        public String firstName;
        public String lastName;
        public String email;
        public String company;
        // other stuff
    }
    
    如果你能解释为什么我以前的做法不起作用

    我不确定这一点,但我可以看到您的代码中有一个问题,您不必在动态表单上调用
    data()
    ,直接使用
    DynamicForm.get()
    就足够了,因此
    first=form.get(“firstName”)
    就足够了

    除此之外,你可以从

    get(java.lang.String键)

    如果提交成功,则获取具体值

    如果没有错误,则
    DynamicForm
    后面的内部映射将具有值,因此在实际从字段中获取具体值之前,您可以使用
    hasrerrors
    进行检查


    在我看来,使用
    表单(Contact.class).bindFromRequest()
    样式将填充class
    Contact
    的实例更好更容易,这并不意味着可以使用Java注释验证字段。

    您必须向
    bindFromRequest()提供
    请求
    方法。例如

     DynamicForm form = form().bindFromRequest(request());
    
    请求
    功能为当前操作提供当前的
    请求
    。 似乎
    bindFromRequest
    不会自动绑定当前请求


    我也遇到了同样的问题,谷歌把我带到这里,希望能有所帮助。

    可能不是完全相同的问题,但在我的Windows开发Play 2.6应用程序上,我也遇到了类似的问题。绑定不起作用。我的意思是表单的数据字段有正确的值,但模型的值是空的。这没有导致这样的元素异常:没有值存在。我我花了很长时间研究这个问题。解决这个问题的方法是清理项目,重新编译并再次运行它。Ehh。

    为什么不直接将参数
    String hello,String hello1,String hello2
    传递到
    主页。联系
    方法,而不是使用
    bindFromRequest
    检索它们?此外,您是否你是否在控制器和视图中正确地使用了
    firstName
    ?@Alex显然没有。我需要做什么特殊的和特定的事情吗?即使我尝试直接传递它们,它也没有正确地发送它们。我得到一个“参数不够”的答案错误。您能否显示真实的html/scala模板,而不是看起来像输入了name=
    hello
    的文本。请显示真实的html/scala模板,以及
    主页的代码。请联系
    方法,包括定义。@alex使用实际代码编辑了它。如果您能解释为什么我以前的做法不起作用,您将获得额外的分数我会取消你被接受的身份,这样我以后才能给你赏金