我正在尝试设置一个包含表单的模板,并且我想使用form template helpers。
根据文档,我应该可以做到:
模板:
@import controllers.MyController.MyFormClass
@(form: Form[MyFormClass])
@helper.form(action = routes.MyController.myView()) {
@helper.inputText(form("field1"))
@helper.inputText(form("field2"))
}
控制:
public class MyController extends Controller {
@Inject
FormFactory formFactory;
public Result myView() {
final Form<MyFormClass> form = formFactory.form(MyFormClass.class).bindFromRequest();
if (form.hasErrors()) {
return badRequest(myTemplate.render(form));
} else {
final MyFormClass data = form.get();
return ok("a ok");
}
}
public static class MyFormClass {
@Constraints.Required()
@Constraints.MinLength(5)
private String field1;
@Constraints.Required()
@Constraints.MinLength(10)
private String field2;
public MyFormClass() {}
public void setField1(String field1) {
this.field1 = field1;
}
public String getField1() {
return this.field1;
}
public void setField2(String field2) {
this.field2 = field2;
}
public String getField2() {
return this.field2;
}
}
}
问题是Form
类来自java api,如果模板需要Form
的scala api,那么控件中会出现错误({{1} })class:
MyController
抱怨
myTemplate.render(form)
无法应用于play.api.data.Form<MyFormClass>
但是,如果在模板中导入java表单:
play.data.Form<MyFormClass>
然后我在模板中出错:
@import play.data.Form
抱怨
无法使用此类签名解析引用inputText
我几乎在(java)文档中复制了这个例子,没有太多变化,所以我不确定我在这里做错了什么。
有什么想法吗?
我的@helper.inputText(form(FIELD))
:
build.sbt
我的name := "my-project-name"
version := "1.0"
lazy val root = (project in file(".")).enablePlugins(PlayJava)
scalaVersion := "2.11.8"
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs
)
:
build.properties
我的template.uuid=SOME_UUID
sbt.version=0.13.11
:
plugins.sbt