【问题标题】:How to format a table in Struts2?如何在Struts2中格式化表格?
【发布时间】:2013-10-28 23:56:57
【问题描述】:

我需要以一种在顶部显示四个标题及其下方的所有字段的方式对其进行格式化。但它会创建额外的 tds 和 trs。

 <form name="edit" method="POST" action="edit">
          <table border="4">
              <thead><tr>
                      <td>Field1</td><td>Field2</td><td>Field3</td<td>Field4</td>            
                     </tr>
              </thead>
              <tbody>
                <s:iterator value="basket.items" var="item" status="element">
                  <tr>
                    <td> <s:textfield type="hidden" id="item[%{#element.index}].id"
                                        name="item[%{#element.index}].id" value="%{id/></td>
                    <td> <s:textfield id="item[%{#element.index}].product.price" 
                                        name="item[%{#element.index}].product.price" value="%{product.price}" /></td>
                    <td> <s:label value="%{product.name}"/></td>

                    <td> <s:label value="%{time}"/> </td>

                    <td> <s:label value="%{date}"/>    </td>

                    <td> <s:textfield name="item[%{#element.index}].product.price2" 
                                       id="item[{#element.index}].product.price2" value="%{product.price2}"/></td>
                 </tr>
               </s:iterator>
             </tbody>
       </table> 
   <input id="edit" type="submit" name="action" value="Edit"/>
 </form>

HTML

    <form name="edit" method="POST" action="edit">
          <table border="4">
                <thead><tr>
                         <td>Field1</td><td>Field2</td><td>Field3</td<td>Field4</td>            
                       </tr>
               </thead>
                <tbody>    
                        <tr>
                            <td>  <tr>
                               <td class="tdLabel"></td>
                            <td><input type="hidden" name="item[0].id" value="16" 
                                                     id="item[0].id"/></td>
                       </tr>
                       </td>
                       <td><tr>
                              <td class="tdLabel"></td>
                      <td><input type="text" name="item[0].product.price" 
                                             value="55"      
                                             id="item[0].product.price"/></td>
                      </tr>
                      </td>
                      <td><tr>
                          <td class="tdLabel"></td> 
                               <td><label id="">Product1</label></td>
                      </tr></td>
                      <td><tr>
                           <td class="tdLabel"></td>
                           <td><label id="">9:31:03 AM</label></td>
                      </tr>
                      </td>
                      <td><tr>
                           <td class="tdLabel"></td>
                           <td><label id="">2013</label></td></tr>
                      </td>
                      <td><tr>
                           <td class="tdLabel"></td>
                           <td><input type="text" name="item[0].unit.price2" 
                                      value="1000.0"  
                                      id="item[0].unit.price2"/>              

                            </td>
                      </tr>
                      </td>
                      </tr>

                </tbody>
            </table> 

【问题讨论】:

    标签: css jsp struts2 listiterator


    【解决方案1】:

    只需切换到simple 主题即可删除多余的内容和格式。

    例如

    <s:textfield name="name" theme="simple"/>
    

    现在它不会创建任何额外的 TR 或 TD。

    【讨论】:

      【解决方案2】:

      将body字段放入td的
      编辑:
      试试这个

      <td>Field1</td><td>Field2</td><td>Field3</td><td>Field4</td>
      

      您忘记了第 3 场关闭的括号
      编辑:
      通过将 TD 放在 &lt;/tr&gt;&lt;tr&gt; 之间,您还做了一些奇怪的事情 TD 总是必须在 TR 里面
      编辑:
      <td> <s:textfield type="hidden" id="item[%{#element.index}].id" name="item[%{#element.index}].id" value="%{id/></td> 这看起来很俗气,看看最后,你忘了引用:)

      【讨论】:

      • 我已经添加了,但它创建了同一个表
      • 我的回答也是如此;),你忘记引用了
      • 我已经添加了所有这些引号,但仍然存在问题,不要担心拼写错误,这是因为我的编辑,但主要问题是它创建的那些额外的 tds
      【解决方案3】:

      &lt;tbody&gt; 中还需要 &lt;td&gt;s:

      <tbody>
        <tr>
          <td>cell content column 1</td>
          <td>cell content column 2</td>
          <td>cell content column 3</td>
          <td>cell content column 4</td>
        </tr>
      </tbody>
      

      tbody 在这方面的行为类似于 thead。小心匹配两个部分中的列数。

      编辑

      似乎您的迭代器负责处理 tbody 部分中的所有 TR 和 TD。但它也会为字段标签创建 TD。

      因此,它在表体中创建的列数是表头中的两倍。您可以在表头中添加额外的标题单元格,或者您可以利用迭代器的结构并使用输入标签并丢失thead

      【讨论】:

      • 当我添加这些时,它会在当前的之外创建额外的 tds
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多