玩表单助手java / scala矛盾

时间:2016-07-03 10:15:04

标签: java forms scala playframework playframework-2.0

我正在尝试设置一个包含表单的模板,并且我想使用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

0 个答案:

没有答案