将列表对象从百里香发送到控制器

时间:2019-05-13 02:42:57

标签: spring-mvc thymeleaf

关于将对象列表从Thymeleaf保存到控制器存在很大的问题。百里香中的对象列表由Jquery生成。但我不知道如何将数据获取到Controller,该Object列表不知道大小。因为用户可以随时添加它。 请帮助我将百里香中的列表对象发送给控制器。

我创建了一个具有1个属性的新类:ArrayList loaiDoans; “ LoaiDoan”是我要保存的对象。 并且使用该类是将“ LoaiDoan”列表从百里香叶保存到控制器的对象。 但是List并不首先知道大小,因为那是在百里香叶中产生的。第一次加载模型时,模型包含列表为空,因此该列表不会显示在屏幕上。

这是我的课程

public class ListLoaiDoan {
    private ArrayList<LoaiDoan> loaiDoans;
//Getter Setter
}

我的控制器将列表对象从控制器绑定到百里香

@RequestMapping("/luunhieuobject")
public String LoadNhieuObjectCungLuc(Model model) {
    ListLoaiDoan listLoaiDoanAAA = new ListLoaiDoan();
    model.addAttribute("listLoaiDoan111",listLoaiDoanAAA);
            return "/MHtrangchu/LuuNhieuObjCungLuc";
        }
//This is the method save list Object from thymeleaf to controller
@PostMapping("/luunhieuobject")
public String processQuery(@ModelAttribute("listLoaiDoan111") ListLoaiDoan listLoaiDoan) {
System.out.println(listLoaiDoan.getLoaiDoans() != null ? listLoaiDoan.getLoaiDoans().size() : "List Empty");
              System.out.println("--");
              return "/MHtrangchu/LuuNhieuObjCungLuc";
   }

LuuNhieuObjCungLuc.html

<form th:object="${listLoaiDoan111}" method="post" th:action="@{/luunhieuobject}">

<!--INPUT FIELDS-->
        <div class="row">
            <div class="col">
                <div id="movieList">
                    <div class="row">
                        <div style="margin-left:100px;" class="col-4 form-group">tenloaidoan</div>
                        <div style="margin-left:100px;" class="col-4 form-group">madoan</div>
                    </div>
                    <div class="row item" th:each="row, stat : ${listLoaiDoan111.loaiDoans}">

                        <div class="col-lg-6 form-group">
                            <input th:field="*{loaiDoans[__${stat.index}__].tenloaidoan}" type="text" class="form-control"/>
                        </div>
                        <div class="col-lg-6 form-group">
                            <input th:field="*{loaiDoans[__${stat.index}__].madoan}" type="text" class="form-control"/>
                        </div>
                    </div>
                </div>
            </div>
        </div>
<!--ADD NEW ROW BUTTON-->
        <div class="row">
            <div class="col">
                <button type="button" class="btn btn-success" onclick="addRow()">Add row</button>
            </div>
        </div>
        <!--SUBMIT FORM BUTTON-->
        <div class="row text-right">
            <div class="col">
                <button type="submit" class="btn btn-primary">Submit</button>
            </div>
        </div>
     </form>

那不会在屏幕上显示任何内容,我知道因为“ listLoaiDoanAAA”是空的,百里香中的“ th:each”什么也没显示,如何生成“ input”标签并保存到控制器对我有帮助!

1 个答案:

答案 0 :(得分:0)

我解决了这个问题! 在将ArrayList绑定到thymeleaf之前,为其设置大小! 我保存我的一天。谢谢Stackoverflow。

我这样修复控制器

@GetMapping("/luunhieuobject")
        public String LoadNhieuObjectCungLuc(Model model) {
            ListLoaiDoan listLoaiDoanAAA = new ListLoaiDoan();
            ArrayList<LoaiDoan> LDD = new ArrayList<LoaiDoan>(10);
            listLoaiDoanAAA.setLoaiDoans(LDD);
            model.addAttribute("listLoaiDoan111", listLoaiDoanAAA);
            return "/MHtrangchu/LuuNhieuObjCungLuc";
        }