2017-02-08 3 views
0

In meiner Spring MVC-Anwendung versuche ich ein komplexes Formular zu erstellen, wo eine Tabelle und die Tabellenspalten auf einmal erstellt werden können.Erstellen Sie eine Tabelle zusammen mit verschachtelten Objekten (Spalten)

Wenn ich mein Formular absende, wird die Tabelle mit allen Attributen erstellt, aber keine Spalten. Was ist mit den verschachtelten Objekten falsch?

Das ist meine Ansicht:

<form id="form2" class="form-horizontal" action="/Weasy/virtualtable/insert" method="post"> 

     <input type="hidden" id="isVirtual" name="isVirtual" value="true"/> 
     <input type="hidden" id="query" name="query" value="select * from aktie"/> 
     <input type="hidden" id="schema" name="schema" value="40"/> 


     <div class="form-group"> 

     <div class="row"> 
       <label class="col-sm-2 control-label" for="name"><i>Column No</i></label> 
       <label class="col-sm-2 control-label" for="name"><i>Column Name</i></label> 
       <label class="col-sm-2 control-label" for="name"><i>Database Type</i></label> 
      </div> 


      <div class="row"> 
       <label class="col-sm-2 control-label" for="name"><i>0</i></label> 
       <label class="col-sm-2 control-label" for="name"><i>ID</i></label> 
       <div class="col-sm-5"> 

        <input type="hidden" class="form-control" name="obj.columns[0].name" value="ID" placeholder="specify name"> 
        <input type="text" class="form-control" name="obj.columns[0].datatype" value="INTEGER , Size: 11" placeholder="specify datatype"> 


       </div> 
      </div> 

      <div class="row"> 
       <label class="col-sm-2 control-label" for="name"><i>1</i></label> 
       <label class="col-sm-2 control-label" for="name"><i>BESCHREIBUNG</i></label> 
       <div class="col-sm-5"> 

        <input type="hidden" class="form-control" name="obj.columns[1].name" value="BESCHREIBUNG" placeholder="specify name"> 
        <input type="text" class="form-control" name="obj.columns[1].datatype" value="VARCHAR , Size: 255" placeholder="specify datatype"> 


       </div> 
      </div> 

      <div class="row"> 
       <label class="col-sm-2 control-label" for="name"><i>2</i></label> 
       <label class="col-sm-2 control-label" for="name"><i>ISIN</i></label> 
       <div class="col-sm-5"> 

        <input type="hidden" class="form-control" name="obj.columns[2].name" value="ISIN" placeholder="specify name"> 
        <input type="text" class="form-control" name="obj.columns[2].datatype" value="VARCHAR , Size: 255" placeholder="specify datatype"> 


       </div> 
      </div> 

      <div class="row"> 
       <label class="col-sm-2 control-label" for="name"><i>3</i></label> 
       <label class="col-sm-2 control-label" for="name"><i>WKN</i></label> 
       <div class="col-sm-5"> 

        <input type="hidden" class="form-control" name="obj.columns[3].name" value="WKN" placeholder="specify name"> 
        <input type="text" class="form-control" name="obj.columns[3].datatype" value="VARCHAR , Size: 255" placeholder="specify datatype"> 


       </div> 
      </div> 

      <div class="row"> 
       <label class="col-sm-2 control-label" for="name"><i>4</i></label> 
       <label class="col-sm-2 control-label" for="name"><i>NAME</i></label> 
       <div class="col-sm-5"> 

        <input type="hidden" class="form-control" name="obj.columns[4].name" value="NAME" placeholder="specify name"> 
        <input type="text" class="form-control" name="obj.columns[4].datatype" value="VARCHAR , Size: 255" placeholder="specify datatype"> 


       </div> 
      </div> 


     <div class="form-group"> 
      <label class="col-sm-2 control-label" for="name"><i>Source Table</i></label> 
      <div class="col-sm-5"> 
       <input type="text" class="form-control" id="name" name="name" 
        value="" placeholder="Virtual Table Name" required> 
      </div> 
     </div> 

      <div class="row"> 
       <div class="col-sm-2"></div> 
       <div class="col-sm-2"> 
        <input id="execQry" class="btn btn-block btn-primary btn-default" 
         type="submit" value="Save" 
         > 
       </div> 
      </div> 
     </div> 
    </form> 

Und das ist die entsprechende Methode meines Controller. Wenn ich es debugge, sehe ich die Tabelle, aber es hat keine Spalten.

@RequestMapping("insert") 
public ModelAndView insert(@ModelAttribute SrcTable obj) { 
    return update(obj); 
} 

Antwort

0

in Ihrem HTML versuchen Sie eine Tabelle mit Bootstrap zu simulieren, wenn man sich http://getbootstrap.com/css/#forms in form horizontal Abschnitt einen Blick darauf werfen kann es Ihnen eine tabellenartige Struktur geben, aber in diesem Fall i empfehle eine Tabellenstruktur in Ihrem Formular.

Beispiel:

<input type="hidden" id="isVirtual" name="isVirtual" value="true"/> 
    <input type="hidden" id="query" name="query" value="select * from aktie"/> 
    <input type="hidden" id="schema" name="schema" value="40"/> 

    <table class="table"> 
     <thead> 
     <tr> 
      <th><i>Column No</i></th> 
      <th><i>Column Name</i></th> 
      <th><i>Database Type</i></th> 
     </tr> 
     </thead> 
     <tbody> 
     <tr> 
      <td><i>0</i></td> 
      <td><i>ID</i></td> 
      <td> 
      <input type="hidden" class="form-control" name="obj.columns[0].name" value="ID" placeholder="specify name"> 
      <input type="text" class="form-control" name="obj.columns[0].datatype" value="INTEGER , Size: 11" placeholder="specify datatype"> 
      </td> 
     </tr> 
     <tr> 
      <td><i>1</i></td> 
      <td><i>BESCHREIBUNG</i></td> 
      <td> 
      <input type="hidden" class="form-control" name="obj.columns[1].name" value="BESCHREIBUNG" placeholder="specify name"> 
      <input type="text" class="form-control" name="obj.columns[1].datatype" value="VARCHAR , Size: 255" placeholder="specify datatype"> 
      </td> 
     </tr> 
     <tr> 
      <td><i>2</i></td> 
      <td><i>ISIN</i></td> 
      <td> 
      <input type="hidden" class="form-control" name="obj.columns[2].name" value="ISIN" placeholder="specify name"> 
      <input type="text" class="form-control" name="obj.columns[2].datatype" value="VARCHAR , Size: 255" placeholder="specify datatype"> 
      </td> 
     </tr> 
     <tr> 
      <td><i>3</i></td> 
      <td><i>WKN</i></td> 
      <td> 
      <input type="hidden" class="form-control" name="obj.columns[3].name" value="WKN" placeholder="specify name"> 
      <input type="text" class="form-control" name="obj.columns[3].datatype" value="VARCHAR , Size: 255" placeholder="specify datatype"> 
      </td> 
     </tr> 
     <tr> 
      <td><i>4</i></td> 
      <td><i>NAME</i></td> 
      <td> 
      <input type="hidden" class="form-control" name="obj.columns[4].name" value="NAME" placeholder="specify name"> 
      <input type="text" class="form-control" name="obj.columns[4].datatype" value="VARCHAR , Size: 255" placeholder="specify datatype"> 
      </td> 
     </tr> 
     </tbody> 
    </table> 
    <input id="execQry" class="btn btn-block btn-primary btn-default" 
    type="submit" value="Save" 
    > 
    </form> 
+0

Danke für den Hinweis verwenden - und ich werde es folgen - aber es wird das beschriebene Problem nicht beeinflussen, wird es? – tobi

+0

Es wird in Ihrer Server-Seite müssen Sie nicht mit der Ansichtsstruktur nur mit seinem Inhalt kümmern. Stellen Sie nur sicher, dass Ihr Controller den entsprechenden Inhalt erhalten hat. –

+0

Die Ansicht ist jetzt eine Tabelle, wie Sie vorgeschlagen haben. Die Spalten werden jedoch weiterhin nicht mit der Tabelle beibehalten. Und ich kann Ihnen nicht zustimmen, dass das Ändern von Bootstrap zu HTML dieses Problem beheben könnte. – tobi

0

Auf der Suche diese über nach einem Tag Pause, ich meine Fehler gefunden.

statt

<input type="hidden" class="form-control" name="obj.columns[4].name" value="NAME" placeholder="specify name"> 

hatte ich

<input type="hidden" class="form-control" name="columns[4].name" value="NAME" placeholder="specify name"> 
Verwandte Themen