JSP 页面中遍历MAP

时间:2022-05-14 19:36:05
ACtion
用的struts2的 get set 方法传map

	private Map setPageBean(List<BookInfo> bookInfoList, List bookBorrowList) {
Map<String, String> map = new TreeMap<String, String>();

for (int i = 0; i < bookInfoList.size(); i++) {
BookInfo bookInfo = bookInfoList.get(i);
int oid = bookInfo.getOid();
String bookName = bookInfo.getBookName();
String bookType = bookInfo.getBookType();

for (int j = 0; j < bookBorrowList.size(); j++) {
BookBorrowInfo borrowInfo = (BookBorrowInfo) bookBorrowList.get(j);
int bookId = borrowInfo.getBookID();
if (bookId == oid) {
Date date = borrowInfo.getBorrowDate();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
String format = sdf.format(date);
String borrowDate = format;
map.put("bookName", bookName);
map.put("bookType", bookType);
map.put("borrowDate", borrowDate);
map.put("backDate", "");// TODO 归还时间
}
}
}
return this.map = map;
}



在页面上用EL循环
<c:forEach var="map" items="${map}">
<td>${map.key}</td>
<td>${map.value}</td>

能取到所有的key和value 但是 不能取单独的一个值

使用${map.value.bookName} 什么页面就报错
javax.el.PropertyNotFoundException: Property 'bookName' not found on type java.lang.String

14 个解决方案

#1


${map.value}并不是一个对象

#2


${map.value} 取出来的是一个字符串值

#3


我知道${map.value}取出来的是一堆值,
我想问 怎么取单个值

${map.value.bookName}
没用

#4


你的map的值是一个String啊,哪来的bookName

#5


引用 4 楼 potatochen 的回复:
你的map的值是一个String啊,哪来的bookName

请详细说明一下错误位置什么的

#6


${map.bookName}
或者直接${bookName}
得了。

#7


 Map<String, String> map = new TreeMap<String, String>();
楼主,你的概念不清楚,你这个map中存的是string,而你取数据却要从book对象取,这样是取不出来的。
建议你这样写
map<book.getid,book>
book = new book;
book.set***
book.set***
map.put(book);
这样的话就行了,你的页面就不用改了,你那种存的方式有问题

#8


引用 6 楼 kkvoo 的回复:
${map.bookName}
或者直接${bookName}
得了。

不知道说什么好,要是你这个就能出我 我有必要发这个帖么

#9


<c:forEach var="map" items="${map}">
            <td>${map.key}</td>
            <td>${map.value}</td>


首先你这句话就有问题

你的items也叫map,遍历的变量也叫map
你要遍历就给换个名字

其次这里根本就不用遍历
整个语句就写一个

${map.bookName}就得了,遍历啥?

#10


用el表达式取得map中的值
格式为

${map名字.键}

#11


${map['bookName']}

#12


感觉你这个java 方法不对,不知道你想干什么,
循环把对象的属性放map里?

#13


引用 8 楼 yjyq61 的回复:
引用 6 楼 kkvoo 的回复:
${map.bookName}
或者直接${bookName}
得了。

不知道说什么好,要是你这个就能出我 我有必要发这个帖么



...???!!!

#14


${map['bookName']} , bookName为map的key值

#1


${map.value}并不是一个对象

#2


${map.value} 取出来的是一个字符串值

#3


我知道${map.value}取出来的是一堆值,
我想问 怎么取单个值

${map.value.bookName}
没用

#4


你的map的值是一个String啊,哪来的bookName

#5


引用 4 楼 potatochen 的回复:
你的map的值是一个String啊,哪来的bookName

请详细说明一下错误位置什么的

#6


${map.bookName}
或者直接${bookName}
得了。

#7


 Map<String, String> map = new TreeMap<String, String>();
楼主,你的概念不清楚,你这个map中存的是string,而你取数据却要从book对象取,这样是取不出来的。
建议你这样写
map<book.getid,book>
book = new book;
book.set***
book.set***
map.put(book);
这样的话就行了,你的页面就不用改了,你那种存的方式有问题

#8


引用 6 楼 kkvoo 的回复:
${map.bookName}
或者直接${bookName}
得了。

不知道说什么好,要是你这个就能出我 我有必要发这个帖么

#9


<c:forEach var="map" items="${map}">
            <td>${map.key}</td>
            <td>${map.value}</td>


首先你这句话就有问题

你的items也叫map,遍历的变量也叫map
你要遍历就给换个名字

其次这里根本就不用遍历
整个语句就写一个

${map.bookName}就得了,遍历啥?

#10


用el表达式取得map中的值
格式为

${map名字.键}

#11


${map['bookName']}

#12


感觉你这个java 方法不对,不知道你想干什么,
循环把对象的属性放map里?

#13


引用 8 楼 yjyq61 的回复:
引用 6 楼 kkvoo 的回复:
${map.bookName}
或者直接${bookName}
得了。

不知道说什么好,要是你这个就能出我 我有必要发这个帖么



...???!!!

#14


${map['bookName']} , bookName为map的key值