Company logo
  • Empleos
  • Bootcamp
  • Acerca de nosotros
  • Para profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
    • Bootcamp
  • Para empresas
    • Inicio
    • Nuestro proceso
    • Planes
    • Pruebas
    • Nómina
    • Blog
    • Calculadora

0

68
Vistas
How do I make a table row an array?

If you add table rows as shown in the code below, they are stored in one row when they are saved in the database.

function addRow() {
    var table = document.getElementById("table");
    var row = table.insertRow(0);
    var cell1 = row.insertCell(0);
    var cell2 = row.insertCell(1);
    var cell3 = row.insertCell(2);
    var cell4 = row.insertCell(3);
    cell1.innerHTML = "<h4></h4>";
    cell2.innerHTML = "<input type='text' name='testCaseName' id='testCaseName'>";
    cell3.innerHTML = "<textarea name='testProcedure' id='testProcedure' onkeydown='resize(this)' onkeyup='resize(this)'></textarea>";
    cell4.innerHTML = "<input type='text' name='expect' id='expect'>";
}
<table id="table">
    <tr>
        <td>num</td>
        <td>name</td>
        <td>procedure</td>
        <td>expect</td>
    </tr>
    <tr>
        <td><h4></h4></td>
        <td><input type="text" name="testCaseName" id="testCaseName"></td>
        <td><textarea name="testProcedure" id="testProcedure" onkeydown="resize(this)" onkeyup="resize(this)"></textarea></td>
        <td><input type="text" name="expect" id="expect"></td>
    </tr>
    <tr>
        <td>
            <input type="button" value="addRow" onclick="addRow()"></input>
            <input type="submit" value="submit">
        </td>
    </tr>
</table>

Service, ServiceImpl (Use the save method in the JPA Repository)

void register(TestCase testCase);

@Override
    @Transactional
    public void register(TestCase testCase)
    {
        testCaseRepository.save(testCase);
    }

Controller

    @RequestMapping("/testCase/register")
    public String register(TestCase testCase)
    {
        testCaseService.register(testCase);
        
        return "redirect:/testCase/projectList";
    }

I would like to add a row to the database for each row I added as below query statement, so please advise me what to do.

INSERT INTO test_case VALUES(NULL, 'name', 'procedure', 'expect', '1'), (NULL, 'name', 'procedure', 'expect', '1'), (NULL, 'name', 'procedure', 'expect', '1');
6 months ago · Santiago Gelvez
2 Respuestas
Responde la pregunta

0

you can use Thymeleaf

see https://www.thymeleaf.org/

Help you control the data on the elements in the web page with ease

Add a form to the html page as follows:

<form th:action="@{'/testCase/register'}" method="post" th:object="${testcase}>
    <table id="table">
      <tr>
        <td>num</td>
        <td>name</td>
        <td>procedure</td>
        <td>expect</td>
    </tr>
    <tr>
        <td><h4></h4></td>
        <td><input type="text" name="testCaseName" th:field="*{testCaseName}" id="testCaseName"></td>
        <td><textarea name="testProcedure" th:field="*{testProcedure}" id="testProcedure" onkeydown="resize(this)" onkeyup="resize(this)"></textarea></td>
        <td><input type="text" name="expect" th:field="*{expect}" id="expect"></td>
    </tr>
    <tr>
        <td>
            <input type="button" value="addRow" onclick="addRow()"></input>
            <input type="submit" value="submit">
        </td>
    </tr>
 </table>
</form>

Make sure that the field names are the same as the field names in entity TestCase

Modify the controller class as follows:

@ModelAttribute(value = "testcase")
public TestCase testcase()
 {
    return new TestCase();
 }

@RequestMapping(value = "/testCase/register" , method = RequestMethod.POST)
public String register(@ModelAttribute("testcase") TestCase testCase)
 {
    testCaseService.register(testCase);
    
    return "redirect:/testCase/projectList";
 }
6 months ago · Santiago Gelvez Denunciar

0

You are posting a singular entity asfar as i can see. To post a list for a start you have to modify controller to accept said list

@RequestMapping("/testCase/register")
public String register(List<TestCase> testCases)
{
    testCaseService.register(testCases);
        
    return "redirect:/testCase/projectList";
}

And than modify the html so that it maps correctly to the given list

<form th:action="@{'/testCase/register'}" method="post">
    <table id="table">
      <tr>
        <td>num</td>
        <td>name</td>
        <td>procedure</td>
        <td>expect</td>
    </tr>
    <tr>
        <td><h4></h4></td>
        <td><input type="text" name="testCases[0].testCaseName"></td>
        <td><textarea name="testCases[0].testProcedure" onkeydown="resize(this)" onkeyup="resize(this)"></textarea></td>
        <td><input type="text" name="testCases[0].expect"></td>
    </tr>
    <tr>
        <td>
            <input type="button" value="addRow" onclick="addRow()"></input>
            <input type="submit" value="submit">
        </td>
    </tr>
 </table>
</form>

You'd also have to modify the html so that the addRow() function correctly adds the next[x] for the input names.

If you wanted to fill pre-existing data you have to add rows in a each loop like

<tr th:each="testCase, iter : ${testCases}">
    <td><h4></h4></td>
    <td><input type="text" th:name="${testCases[__${personStat.index}__].testCaseName}" th:value="${testCase.testCaseName}"></td>
    <td><textarea th:name="${testCases[__${personStat.index}__].testCaseName}" th:value="${testCase.testCaseName}" onkeydown="resize(this)" onkeyup="resize(this)"></textarea></td>
    <td><input type="text" th:name="${testCases[__${personStat.index}__].expect}" th:value="${testCase.expect}"></td>
</tr>
6 months ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar empleo Planes Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2023 PeakU Inc. All Rights Reserved.