早先时候已经有一篇写到struts的iterator标签去遍历些基本的集合数据了,比如单个对象的List啊,多个对象的List啊,map等等。最近呢又遇见两种情况,在这里给记录一下,方便自己以后能随时查看,也希望能在一定程度上帮助到大家。
第一种情况是,这里首先有两个表,一个表是客户表(CustomerInfo),一个表是收货人表(TakerInfo),两个表中,都有姓名(name)和电话(cellphone)的属性,根据页面输入的一系列条件,如name,cellphone等去查询两表,得到一个存放着customerinfo和takerinfo的集合。并将这个集合绑定到页面,并标示出,这个人是来自于客户表,还是来自于收货人表。
action代码如下:
private Map<String, List>map; /包含客户和取货人的map集合
private List<TakerInfo>list; //取货人list
private List<CustomerInfo> list2; //客户list
public String getAllUserLs(){
map=new HashMap<String, List>();
list=takerInfoDao.getAllTakers(); //dao层实现省略,此处不是重点
list2=customerInfoDao.getAllCus();
if(list.size()>0&&list2.size()>0)
map.add("takers",list);
map.add("customers",list2);
return SUCCESS;
}
绑定该map的页面代码如下:
<s:iterator value="map3" var="var">
<s:if test="#var.key=='takers'">
<s:iterator value="#var.value" var="takerInfo">
<tr>
<td >真实姓名:<s:property value="#takerInfo.RealName"/></td>
<td >手机号码:<s:property value="#takerInfo.Cellphone"/></td>
</tr>
</s:iterator>
</s:if><s:else>
<s:iterator value="#var.value" var="customerInfo">
<tr>
<td >真实姓名:<s:property value="#customerInfo.customerRealName"/></td>
<td >手机号码:<s:property value="#customerInfo.customerCellphone"/></td>
</tr>
</s:iterator>
</s:else>
</s:iterator>
上面页面和代码我都尽量写得最清楚直白了,方便大家理解,很多方法的实现或者页面上的其他字段,样式,js我都抹掉了。
第二种情况是,有一个得到所有城市的接口[返回的值里存有城市名称和城市的id等信息],有一个根据单个城市id得到这个城市下,所有车辆品牌的接口[返回的值里,存有一个城市下的所有车辆的品牌id,品牌名称等信息]。
这里需要实现就是,在一个页面上,显示出所有车辆品牌名称,并显示它是属于哪个城市下的,如有是上海有10个车辆品牌,武汉有10个车辆品牌,你得显示这20辆车的详细,并指出它是哪个城市下的。
action的代码如下:
private List<Map<String, Object>> brandsMapList; //一个城市下所有品牌的map
private List<Map<String, Object>> regionMapList; //所有城市map,以此获得所有的城市的id
private Map<String, List<Map<String, Object>>> allBrandMap; //所有城市的,所有品牌map
public String showAllBrand(){
//实例化
allBrandMap=new HashMap<String, List<Map<String,Object>>>();
//得到所有城市
regionMapList=Dom4jUtil.parserXmlStr(carBrandService.getCitys());
for(int i=0;i<regionMapList.size();i++){
//得到单个城市下的所有brand
brandsMapList=Dom4jUtil.parserXmlStr(carBrandService.getSelfDriveServiceCityBrands(regionMapList.get(i).get("id").toString()));
//所有城市下的,所有brand
allBrandMap.put(regionMapList.get(i).get("name").toString(), brandsMapList);
}
}
绑定该集合的jsp页面是:
<s:iterator value="allBrandMap" status="index" var="citys">
<s:if test="#citys.value!=null">
<s:iterator value="#citys.value" var="brand">
<tr>
<td ><s:property value="#brand.name"/></td>
<td ><s:property value="#citys.key"/> </td>
<td >[查看][删除]</td>
</tr>
</s:iterator>
</s:if>
</s:iterator>
分享到:
相关推荐
本资源“struts2 表单数据绑定map、list等.rar”着重讲解了Struts2如何处理表单数据,特别是如何将表单数据绑定到Map和List等集合类型。了解这些内容对于构建动态、复杂的Web应用至关重要。 在Struts2中,数据绑定...
4. `private Map<String, List<Student>> listMap`: 存储学生列表,每个键对应一个包含多个Student对象的列表。 在`testMap()`方法中,我们为这些Map对象填充了示例数据。这些数据可以被传送到视图层进行展示。 接...
private Map<String, Role> roles = new HashMap<>(); // getters and setters } ``` 这里的`roles` Map将用户的ID作为键,Role对象作为值,映射到数据库中的关联表。 **4. Map容器在CRUD操作中的应用** 在SSH...
<form method="post" action="/struts-example/list-action"> <table> <tr> <th>Name</th> <th>Age</th> </tr> <tr> <td><input type="text" name="users[0].name" value="Alice"/></td> <td><input type=...
- 配置Struts2框架,包括`<struts>`、`<package>`、`<action>`、`<interceptor-ref>`和`<result>`等标签。 - 例如,配置`<package>`标签时,设置`name="csg_taglib"`,`namespace="/taglib"`,`extends="struts-...
Map<String, Object> result = new HashMap<>(); result.put("total", totalPages); result.put("records", totalRecords); return result; } } ``` 在Struts2的配置文件中,需要声明这个Action和对应的...
- 第48行的`<s:set>`标签创建了一个名为`map`的Map对象,其键值对由一对花括号内的表达式定义:`{'1':'eeeee','2':'ddddd','3':'ccccc','4':'bbbbb','5':'aaaaa'}`。这实际上创建了一个`Map<String, String>`。 - ...
public Map<String, Object> getJson() { return Collections.singletonMap("data", data); } } ``` 这样,当你在jQuery的AJAX请求中指定URL为`yourAction.action`时,Struts2会返回JSON格式的`data`对象。 3...
比如,如果Action类有一个`List<String> messages`属性,我们可以在JSP中使用`<s:iterator value="messages">`标签遍历这个列表。 描述中提到的"ognl标签"是指Struts2提供的与OGNL相关的标签库,它们使得在JSP页面...
protected Map<String, Object> onSubmit(User user) throws Exception { // 处理表单提交逻辑 return new HashMap<>(); } } ``` ##### 4.3 绑定多个字段 在实际应用中,经常需要在一个表单中绑定多个字段。...
本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...
Map<String, Object> model = new HashMap<>(); model.put("user", new User("张三")); // 渲染输出 Writer out = new StringWriter(); template.process(model, out); String result = out.toString(); ``` **5. ...
- 表单回填:通过OGNL,Struts2可以将请求参数自动绑定到Action类的属性上,如 `<s:textfield name="username" />`。 - 视图渲染:在JSP或FreeMarker模板中,可以直接使用OGNL表达式显示模型数据,如 `${user.name...
- 响应实体对象:如`String`、`List`、`Map`等,通常配合`@ResponseBody`使用。 SpringMVC用什么对象从后台向前台传递数据的? 通常使用`Model`或`ModelMap`对象来从后台向前台传递数据。这两个对象都实现了`...
Map<String, Object> context = new HashMap<>(); context.put("action", action); String expression = "action.name"; Object result = Ognl.getValue(expression, context, context); ``` 在这个例子中,`Ognl....
在实际项目中,使用Struts2提供的迭代标签`<s:iterator>`可以在页面上方便地遍历集合。例如,要遍历一个客户列表,可以这样使用: ```xml <s:iterator value="customerList" var="customer"> <s:property value="#...
Apache CXF入门范例以及对传递ListMap类型的疑惑】中,可能会详细解释如何创建和调用一个使用CXF的Web服务,同时也可能讨论了在处理复杂数据类型如List<Map<String, Object>>时遇到的问题和解决方案。通常,CXF允许...
5.1 Struts标签的使用方法 59 5.2 表单标签的共同属性 60 5.3 form标签 62 5.4 textfield、password、hidden标签 63 5.5 submit标签 65 5.6 reset标签 65 5.7 label标签 66 5.8 head标签 66 5.9 textarea标签 66 ...