4

我有一个List<Bill> bills. Bill是一种具有id, amount, date, billDescription. 我想显示Bill对象的复选框列表。所以我使用:

<s:checkboxlist list="bills" name="selectedBills" 
    listKey="id" listValue="displayLabel"/>

我的Bill.getDisplayLabel()打印件:“金额日期账单描述”

40.00 5/1/2011 Electric Bill
1005.25 6/12/2012 Gas Bill

问题是它没有对齐。我想自定义我的 displayLabel 以便金额对齐,日期对齐,并且 billDescription 对齐。它应该显示为:

[ ]   40.00    5/1/2011    Electric Bill
[ ] 1005.26    6/12/2012   Gas Bill

每个前面都有一个复选框。本质上我想生成这个代码:

<table>
   <tr>
      <td><input type="checkbox" name="selectedBills" value="9" id="selectedBills-1"/></td>
      <td style="text-align: right">40.00</td>
      <td>5/1/2011</td>
      <td>Electric Bill</td>
   </tr>
   <tr>
      <td><input type="checkbox" name="selectedBills" value="9" id="selectedBills-2"/></td>
      <td style="text-align: right">1005.26</td>
      <td>6/12/2012</td>
      <td>Gas Bill</td>
   </tr>
</table>

我该怎么做呢?第一列应该有复选框,但最后 3 列是标签的 3 个不同部分。我尝试将<td>代码放入我的内部Bill.getDisplayLabel(),但 struts 将其转义,以便显示实际的<td>标签!

任何想法将不胜感激。

更新:我已经知道如何通过自定义 freemarker 模板垂直显示复选框。

4

2 回答 2

3

使用struts 迭代器怎么样?我没有正确测试这段代码。但我希望它能给你一些想法:

<table>
  <s:iterator value="bills" var="bill">
    <tr>
    <td><input type="checkbox" name="selectedBills" value="${bill.id}" id="selectedBills-2"/></td>
    <td style="text-align: right">${bill.amount}</td>
    <td>${bill.date}</td>
    <td>${bill.description}/td>
    </tr>
  </s:iterator>
</table>
于 2013-07-18T16:20:07.557 回答
0

这就是我最终使用的:

<s:iterator value="bills" var="bill" status="rowstatus">
<tr>
    <td>
        <input type="checkbox" name="selectedBills" value="${bill.id}" 
            id="selectedBills-${rowstatus.index}" />        
    </td>
    <td style="text-align: right">${bill.amount}</td>
    <td >${bill.serviceDate}</td>
    <td>${bill.label}</td>
</tr>
</s:iterator>

这有效。这样做的问题是,如果我在 JSP 上有其他未通过验证的字段,这将不起作用。我必须checked="checked"在末尾添加额外的jstl<input type="checkbox" ...>

于 2013-07-18T19:43:37.163 回答