高分求助JSTL类型转换问题 JSTL 和 el 的数据 好像是 泛类型的吧 不需要转 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 说一下你的代码的问题。<c:forEach items="${map}" var="item" varStatus="s"> ${item[s.index]}</c:forEach>[code]首先,map是不可能像你这样循环的,应该用${item.key}和${item.value}来取值。第二,即使是可以循环也应该写成${map[s.index]},而不是${item[s.index]}第三,s.index可以直接作为整数使用。请看下面的例子:[code=HTML]<%@page contentType="text/html; charset=GBK"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@page import="java.util.HashMap"%><%@page import="java.util.Map"%><%@page import="java.util.List"%><%@page import="java.util.ArrayList"%><html><head><title>Insert title here</title></head><body><%Map m = new HashMap();m.put("1","a");m.put("2","b");m.put("3","c");m.put("4","d");request.setAttribute("map",m);List l = new ArrayList();l.add("1");l.add("2");l.add("3");request.setAttribute("l",l);%><c:forEach items="${l}" var="item" varStatus="s"> ${l[s.index]}</c:forEach></body></html> ${item[s.index]}可以直接在jsp中打印如果你想利用他运算的话可以直接做运算,不做运算可以直接打印,你所说的转型没有意义 首先谢谢各位热情相助。回楼上诸位,因为我打印${item[s.index]}一直为空,但是打印${item['0']}就不为空了,map中有如下的数据[key,value]:["1",value1],["2",value2]等等。我需要根据forEach的行号取到map中的值,应该如何写? map本身就不是按照放入顺序来读取内容的数据结构。你可以把map声明为LinkedHashMap,这种map在遍历的时候会维持放入元素的顺序。<%@page contentType="text/html; charset=GBK"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@page import="java.util.HashMap"%><%@page import="java.util.Map"%><%@page import="java.util.List"%><%@page import="java.util.ArrayList"%><%@page import="com.sun.tools.jdi.LinkedHashMap"%><html><head><title>Insert title here</title></head><body><%Map m = new LinkedHashMap();m.put("1","a");m.put("2","b");m.put("3","c");m.put("4","d");request.setAttribute("map",m);%><c:forEach items="${map}" var="item" varStatus="s"> ${item.key }:${item.value }<br/></c:forEach></body></html> 楼上正解,用item.key, item.value另外s.index不是int类型,应该是IntegervarStatus的所有属性都是对象 <%@page import="com.sun.tools.jdi.LinkedHashMap"%>应该改为java.util.LinkedHashMap,写得太匆忙了。 回楼上,首先谢谢你的回答。但是你大概还是没有理解的我意思,我需要根据forEach的行号取到map中的值,我需要判断当前的行号s.index在map中是否有对应的key,然后输出map的value,应该怎么写? 不可以打印啊,我试过了的。只有${item['0']}这种才可以打印。 ${item[String.Valueof(s.index)]}不可以这样写的吧? 不要问这些“高手”了,水平太高,喜欢问非所答答案肯定的,没有,fmt也只是用来做输出的,你的需求是作为一个变量,我也遇到这个,我现在的解决办法是在后台直接把类型强制转换过来 怎么实现排版器中自动添加首尾签名? foreach 循环嵌套问题 求助 如何实现js选择字体 求 lomboz 3.3 插件 思考做网站如何入手? 如何通过JavaScript判断用户没有选择值 求助:用Eclipse里用Glassfish插件连接Mysql 请教jsp:useBean动作标签问题~~~~ 关于dreamwear滚动条 如何用JS给<select name="str"></option>赋值? 如何将access数据库中的数据导入mysql数据库? 最好是源代码 Servlet简介
<c:forEach items="${map}" var="item" varStatus="s">
${item[s.index]}
</c:forEach>
[code]
首先,map是不可能像你这样循环的,应该用${item.key}和${item.value}来取值。
第二,即使是可以循环也应该写成${map[s.index]},而不是${item[s.index]}
第三,s.index可以直接作为整数使用。请看下面的例子:
[code=HTML]
<%@page contentType="text/html; charset=GBK"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<%
Map m = new HashMap();
m.put("1","a");
m.put("2","b");
m.put("3","c");
m.put("4","d");
request.setAttribute("map",m);List l = new ArrayList();
l.add("1");
l.add("2");
l.add("3");
request.setAttribute("l",l);
%>
<c:forEach items="${l}" var="item" varStatus="s">
${l[s.index]}
</c:forEach>
</body>
</html>
回楼上诸位,因为我打印${item[s.index]}一直为空,但是打印${item['0']}就不为空了,map中有如下的数据[key,value]:["1",value1],["2",value2]等等。我需要根据forEach的行号取到map中的值,应该如何写?
你可以把map声明为LinkedHashMap,这种map在遍历的时候会维持放入元素的顺序。<%@page contentType="text/html; charset=GBK"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.sun.tools.jdi.LinkedHashMap"%>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<%
Map m = new LinkedHashMap();
m.put("1","a");
m.put("2","b");
m.put("3","c");
m.put("4","d");
request.setAttribute("map",m);
%>
<c:forEach items="${map}" var="item" varStatus="s">
${item.key }:${item.value }<br/>
</c:forEach>
</body>
</html>
另外s.index不是int类型,应该是Integer
varStatus的所有属性都是对象
应该改为java.util.LinkedHashMap,写得太匆忙了。
不可以打印啊,我试过了的。只有${item['0']}这种才可以打印。
${item[String.Valueof(s.index)]}不可以这样写的吧?
答案肯定的,没有,fmt也只是用来做输出的,你的需求是作为一个变量,我也遇到这个,我现在的解决办法是在后台直接把类型强制转换过来