繁体   English   中英

如何在Play 2 Framework中将表单字段绑定到对象

[英]How to bind form field to an object in Play 2 Framework

我一直无法让我的表单绑定正常工作(基本上是Trial and Error)。 在Play 2.0.3(Java)中,将表单绑定到由其他对象组成的模型的正确方法是什么?

我整理了这个小例子,试图更好地理解它。 但是,即使这个基本示例似乎也存在问题。

我试图将Form绑定到的Simple类具有3个字段,一个是普通的String字段,一个String列表,还有一个自定义字段,它只是一个字符串包装。 提交表单时,除自定义字段保留为空外,所有字段均被填充。

这是实际的代码

调节器

static Form<Simple> simpleform=form(Simple.class);
public static Result simpleForm(){
Form<Simple> filledForm=simpleform.bindFromRequest();
        System.out.println(filledForm);
    return ok(views.html.simpleForm.render(filledForm.get().toString()));
}

模型

public class Simple {
    public String text;
    public List<String> stringList;
    public SimpleWrapper wrappedText;
    @Override
    public String toString(){
        return text +"-"+simpleWrapper+"-"+stringList;
}

public  class SimpleWrapper{
        String otherText;
        public SimpleWrapper(){}
        public SimpleWrapper(String otherText){
            this.otherText=otherText;
        }
        @Override
        public String toString(){
            return otherText;
        }
    }

视图

@(text:String)
@import helper._
@form(routes.Management.simpleForm()){
  <input type="hidden" value="string" name="stringList[0]">
  <input type="hidden" value="stringAgain" name="stringList[1]">
  <input type="hidden" value="wrapped" name="wrappedText.otherText">
  <input type="text" id="text" name="text">
  <input type="submit" value="submit">
}
This was passed @text

为了允许对象的自动绑定,您必须为类提供一个setter方法。在我的实验中,SimpleWrapper类缺少该setter方法,因此该类应该已经

public  class SimpleWrapper{
    String otherText;
    public SimpleWrapper(){}

    public setOtherText(String otherText){
     this.otherText=otherText;
    }

    @Override
    public String toString(){
        return otherText;
    }
}

看来,即使构造函数也不相关。

这是有关基础Spring数据绑定程序链接的链接 ,该链接可能会有所帮助。 我是从Google Play小组获得的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM