我在使用java jstl在html表中显示数据时遇到问题。我希望以前有人这样做,可以提供指导或示例。
这是表(行,数据)当前显示的方式:
Apple, Orange, Mange
100, 101, 102
200, 201, 202
300, 301, 302
但这就是我实际需要它来显示的方式
Apple, 100, 200, 300
Orange, 101, 201, 301
Mango, 102, 202, 302
这是我目前的JSTL显示代码
<c:forEach items="${dataSetList}" var="currentDataSetObj">
<tr>
<c:forEach items="${currentDataSetObj.myList}" var="currentValueOfDataElement" varStatus="loopCount" >
<td> <c:out value="${currentValueOfDataElement}" /> </td>
</c:forEach>
</tr>
</c:forEach>
这是服务器代码
public class DataSet {
List<String> myList = new ArrayList<String>();
// more stuff not relevant to question here
}
List<DataSet> dataSetList = new ArrayList<DataSet>();
DataSet dataSetOne = new DataSet();
DataSet dataSetTwo = new DataSet();
DataSet dataSetThree = new DataSet();
DataSet dataSetFour = new DataSet();
List<String> fruitA = new ArrayList<String>();
List<String> priceA = new ArrayList<String>();
List<String> priceB = new ArrayList<String>();
List<String> priceC = new ArrayList<String>();
fruitA.add("Apple");
fruitA.add("Orange");
fruitA.add("Mango");
priceA.add("100");
priceA.add("101");
priceA.add("102");
priceB.add("200");
priceB.add("201");
priceB.add("202");
priceC.add("300");
priceC.add("301");
priceC.add("302");
dataSetOne.setMyList(fruitA);
dataSetTwo.setMyList(priceA);
dataSetThree.setMyList(priceB);
dataSetFour.setMyList(priceC);
dataSetList.add(dataSetOne);
dataSetList.add(dataSetTwo);
dataSetList.add(dataSetThree);
dataSetList.add(dataSetFour);
request.setAttribute("dataSetList", dataSetList);
答案 0 :(得分:2)
最简单的方法是更改dataSet中的值顺序。
例如:
fruitA.add("Apple");
fruitA.add("100");
fruitA.add("200");
fruitA.add("300");
答案 1 :(得分:2)
@ZaoTaoBao有answered你的问题,
<小时/> 除了你的问题:
使您的服务器代码变得简单,遵循Java中的 OO 设计。
而不是创建许多List's
,创建一个类来保存水果信息,如:
public class Fruit {
private String name;
private double[] prices;
//getters, setters & constructor
}
然后创建一个List
对象来保存Fruit's
,如:
List<Fruit> fruitList = new ArrayList<Fruit>();
Fruit appleFruit = new Fruit("Apple", new double[]{100.0, 200.0, 300.0});
Fruit orangeFruit = new Fruit("Orange",new double[]{101.0, 201.0, 301.0});
Fruit mangoFruit = new Fruit("Mango",new double[]{102.0, 202.0, 302.0});
fruitList.add(appleFruit);
fruitList.add(orangeFruit);
fruitList.add(mangoFruit);
request.setAttribute("fruitList", fruitList);
使用单<c:forEach..
<c:forEach items="${fruitList}" var="currentFruit">
<tr>
<td>
<c:out value="${currentFruit.name}" />
</td>
<c:forEach items="${currentFruit.prices}" var="price">
<td>
${price}
</td>
</c:forEach>
</tr>
</c:forEach>
</table>