jstl 显示 Map>的问题。

pressman 2008-12-03 10:30:13
我在jsp页面取得了一个Map<String, List<String>>类型的对象,想在<table>里显示出来如下:

key1 key2 key3 key...
value1ofkey1 value1ofkey2 value1ofkey3 ...
value2ofkey1 value2ofkey2 value2ofkey3 ...
value3ofkey1 value3ofkey2 value3ofkey3 ...
... ... ... ...

写了半天,写不出来,请赐教!!

我这样写的,是错的
<table id="tableId" width="100%" cellspacing="1" cellpadding="3" bgcolor="#666666">
<tr>
<c:forEach items="${DataCache}" var="DataCache">
<td>${DataCache.key} </td>
</c:forEach>
</tr>
<c:forEach items="${DataCache}" var="DataCache">

<c:forEach items="${DataCache.value}" var="DataCacheValue" varStatus="state">
<tr <c:if test="${state.index%2!=0}">bgcolor="#DAECED"</c:if>>
<td bgcolor="#ffffff">${DataCacheValue}</td>
</tr>
</c:forEach>
</c:forEach>
</table>
...全文
692 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunwei_07 2008-12-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pressman 的回复:]
to sunwei_07 :
你也是用 <br>分割数据的,不好。


我想用 <tr> <td>这样来分隔数据,不用 <br>,因为和其他网页要保持风格一致呀!!
大家帮帮忙
[/Quote]

汗,你在里面加个table。用tr循环不就OK了
zou_wei_forever 2008-12-03
  • 打赏
  • 举报
回复
这样在页面只要显示就可以了,比如:List list = new Arraylist();
list.add("1");
list.add("2");
list.add("3");
List list2 = new Arraylist();
list.add("4");
list.add("5");
list.add("6");
List list3 = new Arraylist();
list.add("7");
list.add("8");
list.add("9");


map.put("1",list);
map.put("2",list2);
map.put("3",list3);
这样页面显示可能这样:
1 2 3
4 5 6
7 8 9
但是,你这样加入的话:
List list = new Arraylist();
list.add("1");
list.add("4");
list.add("7");
List list2 = new Arraylist();
list.add("2");
list.add("5");
list.add("8");
List list3 = new Arraylist();
list.add("3");
list.add("6");
list.add("9");

显示出来就是这样了:
1 4 7
2 5 8
3 6 9
zou_wei_forever 2008-12-03
  • 打赏
  • 举报
回复
可不可以将value1ofkey1 value1ofkey2 value1ofkey3 ...
value2ofkey1 value2ofkey2 value2ofkey3 ...
value3ofkey1 value3ofkey2 value3ofkey3
这些值在加入到list之前就计算好啊?比如:if(i==0) list1.add("...")else if(i==2)list2.add("...");
那个判断条件自己写,只给个思路!
海会圣贤 2008-12-03
  • 打赏
  • 举报
回复
换在<tr></td>不就行了,格式自己调一下
pressman 2008-12-03
  • 打赏
  • 举报
回复
to sunwei_07 :
你也是用<br>分割数据的,不好。


我想用<tr><td>这样来分隔数据,不用<br>,因为和其他网页要保持风格一致呀!!
大家帮帮忙
sunwei_07 2008-12-03
  • 打赏
  • 举报
回复
java:
try {
ArrayList list = new ArrayList();

list.add("value1");
list.add("value2");

ArrayList list2 = new ArrayList();

list2.add("value2-1");
list2.add("value2-2");

HashMap map = new HashMap();

map.put("key1", list);
map.put("key2", list2);

request.setAttribute("map", map);
} catch (Exception e) {
e.printStackTrace();
}

jsp:

<table border="1">
<tr>
<c:forEach var="m" items="${map}">
<td>
<table>
<tr>
<td>
<c:out value="${m.key}"/>
</td>

</tr>
<tr>
<Td>
<c:forEach var="mm" items="${m.value}">
<c:out value="${mm}"/>
<br>
</c:forEach>
</Td>
</tr>
</table>
</td>
</c:forEach>
</tr>
</table>

效果:
key1 key2
value1 value2-1
value2 value2-2



pressman 2008-12-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zou_wei_forever 的回复:]
假设:List list2 = new Arraylist();
List list3 = new ArrayList();
...
Map map = new HashMap();
map.put("1",list2);
map.put("2",list3);
...
则:
<c:forEach items="${map}" var="mymap" >
<c:forEach items="${mymap.value}" var="xxx">
${xxx}
</c:forEach>
</c:forEach>
[/Quote]
to zou_wei_forever :
我不是问如何显示出来的问题,我是问数据如何用问题中的格式显示,
zou_wei_forever 2008-12-03
  • 打赏
  • 举报
回复
其中mymap.value取到的就是Map <String, List <String>>中的List,如果要用到key,就用mymap.key
zou_wei_forever 2008-12-03
  • 打赏
  • 举报
回复
假设:List list2 = new Arraylist();
List list3 = new ArrayList();
...
Map map = new HashMap();
map.put("1",list2);
map.put("2",list3);
...
则:
<c:forEach items="${map}" var="mymap" >
<c:forEach items="${mymap.value}" var="xxx">
${xxx}
</c:forEach>
</c:forEach>
pressman 2008-12-03
  • 打赏
  • 举报
回复
走开了一会,就这么多回复,我试下。
seaman_ 2008-12-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sunwei_07 的回复:]
java:
try {
ArrayList list = new ArrayList();

list.add("value1");
list.add("value2");

ArrayList list2 = new ArrayList();

list2.add("value2-1");
list2.add("value2-2");

HashMap map = new HashMap();

map.put("key1", list);
map.put("key2", list2);

request.setAttribute("map", map);
} catch (Exception e) {
e.printStackTrace();
}

jsp:

<table border="1">

[/Quote]


<table border="1">
<tr>
<c:forEach var="m" items="${map}">
<td>
<table>
<tr>
<td>
<c:out value="${m.key}"/>
</td>

</tr>
<c:forEach var="mm" items="${m.value}">
<tr><td>
<c:out value="${mm}"/>
</td></tr>
</c:forEach>
</table>
</td>
</c:forEach>
</tr>
</table>
LeayAo 2008-12-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sunwei_07 的回复:]
引用 5 楼 pressman 的回复:
to sunwei_07 :
你也是用 <br>分割数据的,不好。


我想用 <tr> <td>这样来分隔数据,不用 <br>,因为和其他网页要保持风格一致呀!!
大家帮帮忙


汗,你在里面加个table。用tr循环不就OK了
[/Quote]

貌似这个也不错。。多用几个table..是可以解决的
LeayAo 2008-12-03
  • 打赏
  • 举报
回复
首先你那几个列表应该是等长的,不然没法这样格式罗列
然后就用同一个循环
假设:List list2 = new Arraylist();
List list3 = new ArrayList();
...
Map map = new HashMap();
map.put("1",list2);
map.put("2",list3);
...
则:
<c:forEach items="${map}" var="mymap" >
var1=list1;

</c:forEach>
先把list全部取出来,共用一个循环读出

<c:forEach items="${mymap.value}" var="xxx" varStatus="i">
<tr>
<td>${var1[i]} </td><td>${var2[i]} </td>
</tr>
</c:forEach>
代码下载链接: https://pan.quark.cn/s/3379ee0243ef 在IAR调试环节中,使用者或许会遭遇各式各样的故障,这些故障可能波及编译、链接以及执行时的情形。下面列出了部分常见的IAR调试故障及其应对措施: 1. **头文件中全局变量的声明**:IAR链接器不允许在头文件里声明全局变量,但容许多个源文件同时引用同一变量。一旦出现此类状况,应将全局变量声明为`extern`类型。例如,错误信息`Error[e27]: Entry "tagData" redefined`可以通过在头文件中附加`extern`关键字来纠正。 2. **隐式指定的函数**:`Error[Pe223]: function "assert_param" declared implicitly`指出函数`assert_param`未被显式地定义。务必确保包含了适宜的头文件,比如`stm32f10x_conf.h`,该文件内含了该函数的原型。倘若已包含,则可能是库文件版本不匹配或项目配置存在疑惑。 3. **无原型指引的函数**:`Error[Pa045]: function "assert_param" has no prototype`与上述情形相似,意指函数缺乏相应的原型声明。仔细核对相关头文件,保证它们在使用前已被适当地引入。 4. **标识符未获定义**:`Error[Pe020]: identifier "RCC_APB2Periph_GPIOC" is undefined`表明某个标识符的定义未能找到,这通常源于未引入必要的头文件。在此情形下,需包含`stm32f10x_rcc.h`。 5. **宏定义与编译文件的矛盾**:若尝试调整设备配置,如从STM...
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 MPU6050是由InvenSense公司研发的六轴惯性测量单元(IMU),该设备融合了三轴陀螺仪和三轴加速度计。它能够即时检测设备在三维空间中的运动参数,例如角速度和加速度等指标。DMP(Digital Motion Processing)是MPU6050内部集成的一种硬件加速技术,它能够对传感器数据进行处理并实现姿态计算,从而降低主控制器如STM32的计算压力。 STM32是一款基于ARM Cortex-M架构的微控制器,该器件在嵌入式系统领域得到了广泛部署,其特点是处理性能高且能耗低,非常适合用于处理复杂的传感器数据和控制任务。在MPU6050的姿态计算应用场景中,STM32通常负责与MPU6050进行通信、获取传感器数据,并基于DMP提供的结果进行后续的数据处理和应用。 在"MPU6050姿态计算STM32源代码(DMP)"这一项目中,研究者已经完成了将MPU6050的六轴数据通过DMP进行加工,并利用STM32进行读取和解析这些数据的工作。源代码可能涵盖以下几个核心组成部分: 1. **配置初始化**:初始化STM32的GPIO、I2C接口,目的是为了与MPU6050建立有效的通信连接。此外,还需要对MPU6050的寄存器进行设置,激活DMP功能,并设定采样频率和滤波器参数。 2. **数据交换**:利用STM32的I2C接口周期性地从MPU6050获取DMP的输出结果,这些数据通常涵盖设备的角速度、加速度以及姿态角(包括俯仰角、翻滚角和偏航角等)。 3. **姿态计算**:尽管DMP已经对原始数据进行了基础处理,但在STM32端可能还需要进行二次处理,例如采用卡尔...

81,111

社区成员

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

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