我有一个记录(交易)列表,我需要将其作为交易POJO的表格数据显示在JSP页面上,并且需要将其中一些记录的复选框选择作为表单POST返回到操作,我需要检查选择了哪些记录。我正在使用c:forEach进行表格数据显示。JSP为:
<s:form id="executeTradesForm" name="executeTradesForm" action="ExeTradeAction">
<table id="tradesForDisplayTable" border="1" align="left" width="100%">
<tr>
<s:checkbox name="selAllTradeIds" fieldValue="selAllTradeIds"/>
<th>Trade ID</th>
<th>Trade Source</th>
<th>Currency</th>
<th>Trade Status</th>
<th>Trade Date</th>
<th>Start Date</th>
<th>Maturity Date</th>
<th>Trader Name</th>
<th>Trade Quantity</th>
<th>Trade Price</th>
<th>Buy / Sell</th>
</tr>
<c:forEach var="trade" items="${tradesList}" varStatus="stat">
<tr>
<td><s:checkbox name="selTradeId" fieldValue="selTradeId"/></td>
<td><c:out value="${trade.tradeId}" /></td>
<td><c:out value="${trade.tradeSource}" /></td>
<td><c:out value="${trade.currency}" /></td>
<td><c:out value="${trade.tradeStatus}" /></td>
<td><c:out value="${trade.tradeDate}" /></td>
<td><c:out value="${trade.startDate}" /></td>
<td><c:out value="${trade.maturityDate}" /></td>
<td><c:out value="${trade.traderName}" /></td>
<td><c:out value="${trade.tradeQuantity}" /></td>
<td><c:out value="${trade.tradePrice.value}" /></td>
<td><c:out value="${trade.buySell}" /></td>
</tr>
</c:forEach>
<s:submit align="left" name="submit" value="Execute Trades" />
在使用s:checkbox或类似s:checkboxlist的其他方法方面,这里的最佳方法是什么。
我需要知道当使用s:checkbox时,我们是否可以将fieldValue属性作为动态属性,如"checkbox-"(tradeId是唯一的,来自trade.tradeId。如何获取该动态属性?
假设tradeId是一个类似TRD12345的字符串值,Action类将其存储为什么?字符串[]还是布尔数组?(当我们使用s:复选框时)
Struts2文档是需要的,并且没有给出足够的将s:checkbox用于集合等的示例。
我认为s:checkboxlist在您的情况下很有用。你可以按如下方式使用它:
<s:checkboxlist list="tradesList" name="tradesListSelectedItems"
listKey="%{tradeId}" listValue="%{youTradeLibelle}">
</s:checkboxlist>
并在您的操作类中添加一个名为tradesListSelectedItems的String属性,该属性将存储您的交易的检查值。例如,如果选中了"trade1"one_answers"trade2"选项,则选中的值将与逗号组合,tradeListSelectedItems="trade1ID,trade2ID"。