集合:private list<map<String,String>> list;
//getter&setter
.......
map 存储有一个字段 name页面遍历:
<c:foreach item="${list}" var="item">
${item.name}
</c:foreach>这样居然也能输出map.get("name")的值item.name不是默认调用item.getName();这个方法在struts2中咋就这么智能呢?它能自动识别调用哪个啊?高手们请解释下什么原因吧!!
//getter&setter
.......
map 存储有一个字段 name页面遍历:
<c:foreach item="${list}" var="item">
${item.name}
</c:foreach>这样居然也能输出map.get("name")的值item.name不是默认调用item.getName();这个方法在struts2中咋就这么智能呢?它能自动识别调用哪个啊?高手们请解释下什么原因吧!!
ui层直接遍历 list<map> 并没封装到实体类。。 public List<Map<String,String>> query(String sql) throws SQLException {
List<Map<String,String>> result = new ArrayList<Map<String,String>>();
Connection conn = getConnection();
Statement stmt=null;
ResultSet rs=null;
try {
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
// 数据库的行循环
while (rs.next()) {
ResultSetMetaData meta = rs.getMetaData();
Map<String, String> coloum = new HashMap<String, String>();
// 当前行的列循环
for (int i = 1; i <= meta.getColumnCount(); i++) {
coloum.put(meta.getColumnName(i), rs.getString(i));// 注意:这边的index
//coloum.put(meta.getColumnName(i).toLowerCase(), rs.getString(i));
// 必须从1开始
}
result.add(coloum);
}
} finally {
close(conn, stmt, rs);
}
return result;
}
${item.name}
</c:foreach>我咋看这像是 JSTL 的标签?还能让你更奇怪的,这样也行!<c:foreach item="${list}" var="item">
${item['name']}
</c:foreach>
<c:foreach item="${list}" var="item">
${item.name}
</c:foreach>
是jstl的标签
struts2迭代标签是
<s:iterator></s:iterator>
不过这个标签可以迭代map。只要是实现了iterator的类都可以迭代。
是哦..这里是jstl标签哦...
<s:iterator></s:iterator>很喜欢ognl表达式
<c:foreach item="result" var="item">
${item.name}
</c:foreach>
用s标签亦如此。