高分求助JSTL类型转换问题

fenix1983 2008-09-09 10:52:11
<c:forEach items="${map}" var="item" varStatus="s">
其中s.index是int型的,我想将它转换为String类型的并在EL中引用应该怎么写?比如${item[s.index]}。
...全文
1092 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
你转换的目的是什么呢
今天做项目,用到了el表达式和jstl,在tomcat6.0上跑得好好的,没想到copy到tomcat5.5后,服务器起不来了,是tomcat版本的问题。查阅了不少资料,现在总结如下: 错误信息: java.lang.NoClassDefFoundError: javax/el/ExpressionFactory 分析:少包,上网查阅后发现解决方法 解决方法:将javaee.jar包再copy一份放在tomcat目录的common\lib下 如上完成后即解决了该异常,大以为大功告成,没想到又出现了新异常 错误信息:java.lang.NoSuchMethodError: javax.servlet.JSP.PageContext.getELContext()LJAVAx/el/ELContext 分析:这个问题网上找了半天没看到解决方法,只好自己想办法。想起先前看到的一个知识点:tomcat 6 实现了 servlet 2.5 和JSP2.1的规范相应的 tomcat 5 实现的是 2.4和2.0,想到tomcat5不支持JSTL1.2,于是替换JSTL1.1的包试试看后,问题解决 解决方法:移出工程lib目录中的JSTL1.2.jar,添加standard-1.1.jar和JSTL1.1.jar 总结: jstl1.1版本由2个必要包构成:standard-1.1.jar和JSTL1.1.jar;而jstl1.1版本只有一个必要包JSTL1.2.jar。(一开始在替换的过程中想当然的用JSTL1.1.jar换JSTL1.2.jar,然后遗漏了standard-1.1.jar,耽搁了不少时间。) 经测试,tomcat6.0支持JSTL1.2版本,也支持JSTL1.1版本;tomcat5.5只支持JSTL1.1(JSTL1.1一下版本未测试) 不建议将2个版本的3个包同时放在工程中,可能会发生版本冲突。(另外,实际操作的时候发现JSTL1.2.jar和JSTL1.1.jar这2个包放一起可以在tomcat5.5和tomcat6.0上跑,鉴于JSTL1.1.jar里面没有c.tld等文件,猜测JSTL1.1.jar里面只是放置了1.1的专用的类和信息)

81,122

社区成员

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

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