【问题标题】:Create a table together with nested objects (columns)与嵌套对象(列)一起创建表
【发布时间】:2017-02-08 22:37:26
【问题描述】:

在我的 Spring MVC 应用程序中,我正在尝试构建一个复杂的表单,其中可以同时创建一个表和表列。

当我提交表单时,会创建包含所有属性的表,但它没有列。嵌套对象有什么问题?

这是我的看法:

<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>

这是我的控制器对应的方法。当我调试它时,我看到了表格,但它没有列。

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

【问题讨论】:

    标签: spring hibernate model-view-controller nested


    【解决方案1】:

    在您的 HTML 中,您尝试使用引导程序模拟表格,如果您查看 form-horizo​​ntal 部分中的http://getbootstrap.com/css/#forms,它可以为您提供更像表格的结构,但在在这种情况下,我建议您在表单中使用表格结构。

    示例:

        <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>
    

    【讨论】:

    • 感谢您的提示 - 我会遵循它 - 但它不会影响所描述的问题,对吗?
    • 它会,在您的服务器端,您无需担心视图结构,只需担心其内容。只需确保您的控制器已收到适当的内容。
    • 视图现在是一个表格,就像你建议的那样。但是,这些列仍然没有保留在表中。我不能同意你的观点,从 bootstrap 改为 html 可以解决这个问题。
    • 很抱歉没有提供帮助,请将您的标记为答案。
    【解决方案2】:

    在暂停一天后查看此内容时,我发现了我的错误。

    而不是

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

    我不得不使用

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 2020-08-26
      • 2021-09-04
      • 2015-04-16
      • 2022-10-22
      相关资源
      最近更新 更多