我试图在从java类传递的JSP页面中获取
ArrayList
。但最终我没有成功。
这是我所做的:
这是我的 POJO 类:
public class Coordinates {
private double latitude;
private double longitude;
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
}
这是我编写业务逻辑的 Java 类:
public class Leverage extends ActionSupport{
List<Coordinates> mylist = new ArrayList<Coordinates>();
public String getMapDetail()throws Exception{
LevService lev =LevService .getInstance();
mylist = lev .getCurrentLocation();
System.out.println("Size of list is: "+mylist.size());
return SUCCESS;
}
这是我的JSP页面:
<Table>
<s:iterator value="mylist" status="Status">
<tr>
<td><s:property value="%{mylist[#Status.index].latitude}" /></td>
<td><s:property value="%{mylist[#Status.index].longitude}" /></td>
</tr>
</s:iterator>
</Table>
它在控制台中打印
ArrayList
的大小。但它不会创建行。
迭代器标签需要一个
myList
,所以你应该提供一个 getter
public List<Coordinates> getMyList() {
return myList;
}
这个值应该像你一样初始化
private List<Coordinates> myList = new ArrayList<>();
那么您不应该在操作中覆盖它,只需创建一个局部变量或重命名服务返回的变量即可。
List<Coordinates> list = lev.getCurrentLocation();
if (list != null && list.size() > 0)
myList = list;
在 JSP 中,您可以从迭代器标记中获取值,它会在值堆栈中查找标记体内引用的所有值。您不需要提供索引表达式来获取值。
<table>
<s:iterator value="myList">
<tr>
<td><s:property value="%{latitude}" /></td>
<td><s:property value="%{longitude}" /></td>
</tr>
</s:iterator>
</table>