Spring Boot从jsp表单发送List Model

时间:2017-10-14 06:23:01

标签: java spring-boot

您好,我需要帮助。我有一对一的Spring Boot应用程序。我需要帮助从模型jsp表单发送列表并保存到db。 所以我需要从jsp表单同时保存到db两个模型表(一对多)(使用模型属性):

enter image description here


Model 1:

    @Entity
    @Table(name = "header")
    public class Header {
        private int id;
        private String dokument;
        private Set Stavke> stavke; 


    }

    Model 2: 

    @Entity
    public class Stavke {
        private int id;
        private String Artikal;
        private double kol;
        private Header header;
     }

    
<pre>

控制器:

 @RequestMapping(value = "add")
    public String addStudent(Model model){
        model.addAttribute("header", new Header());
        model.addAttribute("stavke", new Stavke());
        return "add";
    }   

  RequestMapping(value = "save2", method = RequestMethod.POST)
    public String sav2(@ModelAttribute("forma")Header header, BindingResult result, SessionStatus status
            ,@RequestParam("stavke") Set String>  stavke, double kol){

    Set stavke1 = new HashSet Stavke>(){{

            for(String stavkes : stavke ){

                 add(new Stavke(stavkes, header, kol));

            }

        }};

       header.setStavke(stavke1);

        headerRepository.save(new HashSet<Header>() {{
              add(header);

          }});

            return "redirect:form";
    }

JSP form:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<SCRIPT language="javascript">
    function addRow(tableID) {

        var table = document.getElementById(tableID);

        var rowCount = table.rows.length;
        var row = table.insertRow(rowCount);

        var cell1 = row.insertCell(0);
        var element1 = document.createElement("input");
        element1.type = "checkbox";
        element1.name = "chkbox[]";
        cell1.appendChild(element1);

        var cell2 = row.insertCell(1);
        cell2.innerHTML = rowCount + 1;

        var cell3 = row.insertCell(2);
        var element2 = document.createElement("input");
        element2.type = "text";
        var length = (table.rows.length) - 1;
        element2.name = "Artikal";
        cell3.appendChild(element2);

        /*  var cell3 = row.insertCell(2);
         var element2 = document.createElement("input");
         element2.type = "text";
         var length=(table.rows.length)-1;
         element2.name = "kol";
         cell3.appendChild(element2); */

        var cell4 = row.insertCell(3);
        var element3 = document.createElement("input");
        element3.type = "text";
        var length = (table.rows.length) - 1;
        element3.name = "kol";
        cell4.appendChild(element3);

    }

function deleteRow(tableID) {
        try {
            var table = document.getElementById(tableID);
            var rowCount = table.rows.length;

            for (var i = 0; i < rowCount; i++) {
                var row = table.rows[i];
                var chkbox = row.cells[0].childNodes[0];
                if (null != chkbox && true == chkbox.checked) {
                    table.deleteRow(i);
                    rowCount--;
                    i--;
                }
            }
        } catch (e) {
            alert(e);
        }
    }
</SCRIPT>


<body>

    <div class="col-md-4">
        <form action="/save4" method="post">
            <input type="text" name="dokument" class="form-control"
                placeholder="Firstname" />
            <div style="clear: both; display: block; height: 10px;"></div>

            <input type="date" name="datum" class="form-control"
                placeholder="15.01.2017" />
            <div style="clear: both; display: block; height: 10px;"></div>

            <TABLE id="dataTable" width="350px" border="1"
                class="table table-bordered">

                <tr>
                    <th width="10"></th>
                    <th width="10">Rb.</th>
                    <th>${last.id+1}</th>

                </tr>

                <TR>
                    <TD><INPUT type="checkbox" name="chk" /></TD>
                    <TD>1</TD>
                    <TD><input type='text' name="Artikal" /></TD>
                    <TD><input type='text' name="kol" /></TD>
                </TR>
            </TABLE>
            </li> <INPUT type="button" value="Add Row" onclick="addRow('dataTable')"
                class="btn" /> <INPUT type="button" value="Delete Row"
                onclick="deleteRow('dataTable')" class="btn" /> <input
                type="submit" class="btn btn-success" value="Save"></input>
        </form>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <SCRIPT language="javascript"> function addRow(tableID) { var table = document.getElementById(tableID); var rowCount = table.rows.length; var row = table.insertRow(rowCount); var cell1 = row.insertCell(0); var element1 = document.createElement("input"); element1.type = "checkbox"; element1.name = "chkbox[]"; cell1.appendChild(element1); var cell2 = row.insertCell(1); cell2.innerHTML = rowCount + 1; var cell3 = row.insertCell(2); var element2 = document.createElement("input"); element2.type = "text"; var length = (table.rows.length) - 1; element2.name = "Artikal"; cell3.appendChild(element2); /* var cell3 = row.insertCell(2); var element2 = document.createElement("input"); element2.type = "text"; var length=(table.rows.length)-1; element2.name = "kol"; cell3.appendChild(element2); */ var cell4 = row.insertCell(3); var element3 = document.createElement("input"); element3.type = "text"; var length = (table.rows.length) - 1; element3.name = "kol"; cell4.appendChild(element3); } function deleteRow(tableID) { try { var table = document.getElementById(tableID); var rowCount = table.rows.length; for (var i = 0; i < rowCount; i++) { var row = table.rows[i]; var chkbox = row.cells[0].childNodes[0]; if (null != chkbox && true == chkbox.checked) { table.deleteRow(i); rowCount--; i--; } } } catch (e) { alert(e); } } </SCRIPT> <body> <div class="col-md-4"> <form action="/save4" method="post"> <input type="text" name="dokument" class="form-control" placeholder="Firstname" /> <div style="clear: both; display: block; height: 10px;"></div> <input type="date" name="datum" class="form-control" placeholder="15.01.2017" /> <div style="clear: both; display: block; height: 10px;"></div> <TABLE id="dataTable" width="350px" border="1" class="table table-bordered"> <tr> <th width="10"></th> <th width="10">Rb.</th> <th>${last.id+1}</th> </tr> <TR> <TD><INPUT type="checkbox" name="chk" /></TD> <TD>1</TD> <TD><input type='text' name="Artikal" /></TD> <TD><input type='text' name="kol" /></TD> </TR> </TABLE> </li> <INPUT type="button" value="Add Row" onclick="addRow('dataTable')" class="btn" /> <INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" class="btn" /> <input type="submit" class="btn btn-success" value="Save"></input> </form>

0 个答案:

没有答案