最近遇到一个比较奇怪的问题
以下是一个bean类
public class PersonBasic { protected List<String> chName; protected List<String> enName; protected List<String> sex; protected List<String> birthdate; protected List<String> marital; protected List<String> height; protected List<String> email; /* .. get set 省略*/ }
假设 已有一个实体personBasic 的sex=[女]
现想在页面遍历显示personBasic.sex
<td>性别</td> <td> <c:import url="tmp/StringList_tmp.jsp"> <c:param name="items" value="${personBasic.sex }"/> </c:import> <ul> <c:forEach items="${personBasic.sex}" var="i" varStatus="s"> <li>${i}</li> </c:forEach> </ul> </td>
StringList_tmp.jsp 代码如下
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <ul> <c:forEach items="${param.items}" var="i" varStatus="s"> <li>${i}</li> </c:forEach> </ul>
但是 这两种的输出结果 且不同
性别 [女]
女
为什么 通过
<c:import url="tmp/StringList_tmp.jsp">
<c:param name="items" value="${personBasic.sex }"/>
</c:import>
的会有[]号葛
要怎样改 才可以 令到
<c:import url="tmp/StringList_tmp.jsp">
<c:param name="items" value="${personBasic.sex }"/>
</c:import>
和遍历时输出效果一样没有[]
因为 现在 这个StringList_tmp.jsp 里面的只是 测试代码 实际上 这个模板 会比较复杂 而且 PersonBasic的属性有几十个 都是List<String>的 如果 不用模板来管理的话 维护 会超麻烦……
希望各位 大牛可以帮忙解答一下 大家研究研究
1 楼
thomas0836
2012-09-13
最后系 高手Ben的帮助下 完美解决问题
初步估计
<c:param name="itemList" value="${personBasic.sex }"/> 这里是将 参数 用get方法传到 目标页 所以 这里的List 变成toString了 然后 itemList="[aa,bb]" 在<c:forEach> 解析为 {'[aa','bb]'}
而用<c:set> 将值保存到 request ,<%@ include> 时就可以找到了 而且类型不变
<td>性别</td> <td> <c:set var="itemList" value="${personBasic.sex}"/> <%@ include file="tmp/StringList_tmp.jsp"%> </td>
初步估计
<c:param name="itemList" value="${personBasic.sex }"/> 这里是将 参数 用get方法传到 目标页 所以 这里的List 变成toString了 然后 itemList="[aa,bb]" 在<c:forEach> 解析为 {'[aa','bb]'}
而用<c:set> 将值保存到 request ,<%@ include> 时就可以找到了 而且类型不变