播放2.1.1 - 不绑定简单选择

时间:2014-06-18 15:17:33

标签: data-binding playframework-2.0

Play 2.1.1有一个令人沮丧的问题

我重新访问了一个工作正常的现有页面并添加了几个简单的select语句(不是多选)。无论我做什么,值都没有绑定到bindRequest()

上的Form

这是我到目前为止所做的事情。

  1. 在视图中提交alert(document.forms[0].mySelectField.value)之前(我可以看到值)
  2. Ran:play reload, play clean, play clean-all, play complile(没用)
  3. 如果我用同名的文本框替换select语句,请将其绑定。
  4. 在Controller中打印request().body().asFormUrlEncoded()。它甚至没有看到选择字段(除了上面第3点的情况)。
  5. MyForm中的mySelectField是私有的。但它有公共吸气剂/设定者。

    这是一个简单的问题,但我现在已经在这4个小时了。有什么建议?感谢。

    查看:

    <input type="text" value="Y" name="mySelectField" />
    <!--
    <select id="mySelectField" name"mySelectField" style="width: 180px;">
     <option value="">All</option>                                               
     <option value="Y">Yes</option>
    <option value="N">No</option>
    </select>   
    --> 
    

    形式:

    private String mySelectField;
    public String getMySelectField() {
        return mySelectField;
    }
    public void setMySelectField(String mySelectField) {
        this.mySelectField= mySelectField;
    }
    

    控制器:

    Form<MyForm> myFormP = Form.form(MyForm.class); 
    MyForm myForm = myFormP.bindFromRequest().get();
    System.out.println("B. "+myForm.getMySelectField());
    System.out.println("Form: "+request().body().asFormUrlEncoded());
    

1 个答案:

答案 0 :(得分:1)

就Play而言,文本字段和选择之间没有区别。两者都是请求中的编码值。我建议你使用chrome或firefox中的dev工具来查看提交的请求中的差异。