我有一个表单类,我有一个String数组。我正在设置字符串数组的值。我需要在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>
但这不适合我。有人可以指导我。
答案 0 :(得分: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>
答案 1 :(得分:0)
使用jstl你可以这样做:
<table>
<c:forEach var = "oneName" items = "${passengerName}" >
<tr><td> ${oneName}</td</tr>
</c:forEach>
</table>