高分求助JSTL类型转换问题

fenix1983 2008-09-09 10:52:11
<c:forEach items="${map}" var="item" varStatus="s">
其中s.index是int型的,我想将它转换为String类型的并在EL中引用应该怎么写?比如${item[s.index]}。
...全文
1138 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengzhiyin2008 2010-09-19
  • 打赏
  • 举报
回复
${item[fn:trim(s.index)]}
freedomTTT 2008-12-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 fenix1983 的帖子:]
<c:forEach items="${map}" var="item" varStatus="s">
其中s.index是int型的,我想将它转换为String类型的并在EL中引用应该怎么写?比如${item[s.index]}。
[/Quote]


${item[s.index+'']}
gigi_ly180 2008-12-18
  • 打赏
  • 举报
回复
不要问这些“高手”了,水平太高,喜欢问非所答
答案肯定的,没有,fmt也只是用来做输出的,你的需求是作为一个变量,我也遇到这个,我现在的解决办法是在后台直接把类型强制转换过来
fenix1983 2008-09-20
  • 打赏
  • 举报
回复
自己顶。
fenix1983 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 huhaihong 的回复:]
String.Valueof()
[/Quote]

${item[String.Valueof(s.index)]}不可以这样写的吧?
mysoko 2008-09-17
  • 打赏
  • 举报
回复
做什么?没理解?
huhaihong 2008-09-17
  • 打赏
  • 举报
回复
String.Valueof()
fenix1983 2008-09-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 dsgdsg 的回复:]
引用 4 楼 kokobox 的回复:
${item[s.index]}可以直接在jsp中打印

如果你想利用他运算的话可以直接做运算,不做运算可以直接打印,你所说的转型没有意义
@!@
[/Quote]

不可以打印啊,我试过了的。只有${item['0']}这种才可以打印。
dsgdsg 2008-09-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kokobox 的回复:]
${item[s.index]}可以直接在jsp中打印

如果你想利用他运算的话可以直接做运算,不做运算可以直接打印,你所说的转型没有意义
[/Quote]@!@
fenix1983 2008-09-15
  • 打赏
  • 举报
回复
回楼上,首先谢谢你的回答。但是你大概还是没有理解的我意思,我需要根据forEach的行号取到map中的值,我需要判断当前的行号s.index在map中是否有对应的key,然后输出map的value,应该怎么写?
funcreal 2008-09-12
  • 打赏
  • 举报
回复
<%@page import="com.sun.tools.jdi.LinkedHashMap"%>
应该改为java.util.LinkedHashMap,写得太匆忙了。
fosjos 2008-09-12
  • 打赏
  • 举报
回复
楼上正解,用item.key, item.value
另外s.index不是int类型,应该是Integer
varStatus的所有属性都是对象
funcreal 2008-09-12
  • 打赏
  • 举报
回复
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>
fenix1983 2008-09-11
  • 打赏
  • 举报
回复
首先谢谢各位热情相助。
回楼上诸位,因为我打印${item[s.index]}一直为空,但是打印${item['0']}就不为空了,map中有如下的数据[key,value]:["1",value1],["2",value2]等等。我需要根据forEach的行号取到map中的值,应该如何写?
jastby 2008-09-10
  • 打赏
  • 举报
回复
JSTL 和 el 的数据 好像是 泛类型的吧 不需要转
呵-春泥 2008-09-10
  • 打赏
  • 举报
回复
使用EL不是不用关心是什么类型的么?不用转~
dadi5566 2008-09-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jastby 的回复:]
JSTL 和 el 的数据 好像是 泛类型的吧 不需要转
[/Quote]
支持
kokobox 2008-09-10
  • 打赏
  • 举报
回复
${item[s.index]}可以直接在jsp中打印

如果你想利用他运算的话可以直接做运算,不做运算可以直接打印,你所说的转型没有意义
funcreal 2008-09-10
  • 打赏
  • 举报
回复
说一下你的代码的问题。


<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>
笨沙发 2008-09-10
  • 打赏
  • 举报
回复
你转换的目的是什么呢

81,116

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧