在play框架java中将视图中的复选框列表发送到控制器

时间:2014-11-18 07:11:34

标签: java list model-view-controller checkbox playframework

我有一个带有复选框的视图

 @for((jc)<-jobcategoryList) {

           <input type="checkbox" name="jobcategory.id" value="@jc.id">@jc.name<br>
                                }

我只想将这个选中的复选框列表发送给我的控制器。但是这样做

public class JobAdController extends Controller {
    public static Result save() {


            Form<Jobads> jobadsFormData = jobadsForm.bindFromRequest();



            if (jobadsFormData.hasErrors()) {

          System.out.println("Error in form");
                 return badRequest();


            } else {

            Jobads jads= jobadsFormData.get();
            List<Jobcategories> jadsList= jads.getJobcategory();

            System.out.print("\nLength is:"+jadsList.size());// always prints Length is:0





          }}
}

其中Jobads和Jobcategory是我的模特。

我的Jabads.java模型

public class Jobads extends Model {


    @ManyToMany

    private List<Jobcategories> jobcategories;
}

我的问题是每当我提交带有复选框的视图表格时(上面给出)。我的控制台打印长度为:0

当我试图将我的观点改为

@for((jc,index)<-jobcategoryList.zipWithIndex) {

               <input type="checkbox" name="jobcategory[index]" value="@jc">@jc.name<br>
                                    }

并在控制器的第一行生成[[NumberFormatException:输入字符串:&#34; index&#34;]]并在控制器的第一行生成我的表单。

如何将此复选框发送到我的控制器。

由于

1 个答案:

答案 0 :(得分:0)

使用:

@for(jc <- jobcategoryList) {
    <input type="checkbox" name="jobcategories[]" value="@jc.id">@jc.name<br>
}

@for((jc,index) <- jobcategoryList.zipWithIndex) {
    <input type="checkbox" name="jobcategories[@index]" value="@jc.id">@jc.name<br>
}

并在您的表单类中:

public List<Long> jobcategories;