0

我有一个表单类,其中有一个字符串数组。我正在设置字符串数组的值。我需要在 JSP 页面中一一打印这个数组值。我写的代码是:

paxList = getPaxList(id);

List<String> passengerName = new ArrayList<String>();
List<Double> passengerAge = new ArrayList<Double>();

for(int i=0; i < paxList.size(); i++){
    passengerName.add(paxList.get(i).getPassengerName());
    passengerAge.add(paxList.get(i).getPassengerAge());
}

bookingsForm.setPassengerName(passengerName.toArray(new String[paxList.size()]));
bookingsForm.setPassengerAge(passengerAge.toArray(new Double[paxList.size()]));

现在我需要打印PassengerName.

我在我的 JSP 页面中尝试过这样

<logic:iterate id="currentPassName" property="passengerName" >
    <bean:write name="currentPassName" />
</logic:iterate>

但这对我不起作用。有人可以指导我。

4

2 回答 2

2

您不应该将您的乘客名单分成两个名单,分别是姓名和年龄。这就是让事情变得困难的原因。只需paxList直接存储到您的表单中。

完成后,帮自己一个忙,使用 JSTL 而不是弃用的 struts 逻辑和 bean 标签:

<c:forEach items="${bookingsForm.paxList}" var="passenger">
    Passenger <c:out value="${passenger.name}" is aged ${passenger.age}<br/>
</c:forEach>

解释为什么它不能按原样工作:

<logic:iterate id="passRecord" property="passengerName" >
    <bean:write name="passengerName" property="passRecord" />
</logic:iterate>

上面遍历了表单passengerName数组的元素(你应该命名它passengerNames,因为它们中有几个),并定义了一个名为passRecord你必须在循环内使用的页面属性。

既然passengerName是一个String数组,passRecord那么就是一个String。在循环内部,您尝试访问passRecord. 中passengerName没有方法getPassRecord()String[]乘客姓名存储在passRecord. 你只需要写它。使用正确命名的变量,它会更清晰:

<logic:iterate id="currentPassengerName" property="passengerNames" >
    <bean:write name="currentPassengerName" />
</logic:iterate>
于 2012-07-24T13:27:46.340 回答
0

使用 jstl 你可以这样做:

<table>
    <c:forEach var = "oneName" items = "${passengerName}" >
    <tr><td> ${oneName}</td</tr>
    </c:forEach>
</table>
于 2012-07-24T13:20:53.160 回答