我将这样做:
template
@(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 class Contact {
public String firstName;
public String lastName;
public String email;
public String company;
// other stuff
}
控制器
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));
}
}
对你起作用吗 ?
您应该查看有关这些主题的 Play2 文档:
- Java表单 http://www.playframework.org/documentation/2.0.1/JavaForms
- JavaForm 助手 http://www.playframework.org/documentation/2.0.1/JavaFormHelpers
Edit
如果你能解释一下为什么我之前这样做didn't work
我不确定这一点,但我可以在您的代码中看到一个问题,您不必调用data()
在动态形式上,直接使用DynamicForm.get()
就足够了,所以first = form.get("firstName")
足够了。
除此之外,正如你可以看到的动态表单 Javadoc http://www.playframework.org/documentation/api/2.0/java/play/data/DynamicForm.html#get%28java.lang.String%29
获取(java.lang.String键)
获取具体值如果提交成功.
后面的内部图DynamicForm
如果没有错误的话有值,所以你可以检查hasErrors
在实际从现场获取具体值之前。
从我的角度来看,使用form(Contact.class).bindFromRequest()
将填充类实例的样式Contact
,这不用说可以使用 Java 注释来验证字段。