JSP中嵌套s标签实现list数据展示

需积分: 12 5 下载量 148 浏览量 更新于2024-09-11 收藏 921B TXT 举报
在JSP页面中,当需要处理列表数据时,特别是在列表嵌套列表的情况下,Spring MVC的`<s:iterator>`标签可以非常方便地实现数据展示。本篇内容主要讲解如何在Spring标签库(如Struts2)的上下文中,利用`<s:iterator>`标签来迭代和嵌套显示数据,这里以一个典型的场景为例:展示系统列表及其包含的服务接口列表。 首先,我们从Java代码部分入手。这段代码展示了如何从服务端获取数据。通过`baseBizService`这个业务逻辑对象,调用两个查询方法,`queryByQueryName2Map`分别用于获取系统列表和每个系统的服务接口列表。具体步骤如下: 1. 调用`queryByQueryName2Map`方法,传入特定的查询名称和一个空的`HashMap`,获取系统列表(`systemList`)作为Map类型,其中每个元素代表一个系统对象。 2. 遍历系统列表,对于每个系统(`Map_system`),获取其ID(`String_sysId`),并创建一个新的`HashMap`(`Map_map`),将系统ID放入其中。 3. 再次调用`queryByQueryName2Map`,传入服务接口查询名称和包含系统ID的`Map_map`,获取该系统的服务接口列表(`List<Map>`)。 4. 将获取的服务接口列表(`serviceList`)存储回原系统对象的`serviceList`属性中。 在JSP页面上,这部分Java代码的输出会被`<s:iterator>`标签处理并渲染到HTML中。具体到页面上,我们有以下结构: ```jsp <s:iterator id="system" value="systemList"> <table width="300px;"> <tr> <td> <s:property value="#system.title">【系统】</s:property> </td> </tr> <!-- 使用嵌套的s:iterator来遍历每个系统的服务接口 --> <s:iterator id="service" value="#system.serviceList"> <tr> <td> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <s:property value="#service.title">【接口】</s:property> </td> </tr> </s:iterator> </table> </s:iterator> ``` 这里的`<s:iterator>`标签有两个,外部的迭代器`system`负责循环遍历整个`systemList`,对每个系统执行一次内部迭代器`service`,从而在每个系统条目下显示其对应的服务接口列表。`<s:property>`标签用于从当前迭代的Map中取出并显示属性值,如`title`。 总结起来,这段代码展示了如何在Spring MVC的JSP页面中使用`<s:iterator>`标签嵌套处理列表数据,首先获取系统列表,然后在每个系统中再迭代展示其关联的服务接口列表。这种结构有助于清晰地组织和展示层次化的数据结构,使得前端用户可以直观地理解数据关系。
2015-01-16 上传
仿某团list里嵌套list\ package com.zl.listview; import java.util.ArrayList; import java.util.HashMap; import com.kjy.kjylistview.R; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.Toast; /** * @author zl * @time 2014年12月24日15:37:18 */ public class QianTaoListviewActivity extends Activity { private ListView listView; private ArrayList<HashMap<String, Object>> parentList, childList; private ParentAdapter parentAdapter; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_qiantao); init(); } private void init() { listView = (ListView) findViewById(R.id.qiantao_lv); getList(); } private void getList() { parentList = new ArrayList<HashMap<String, Object>>(); for (int i = 1; i < 10; i++) { childList = new ArrayList<HashMap<String, Object>>(); for (int j = i < 7 ? i : 7; j < 9; j++) { HashMap<String, Object> ParentMap = new HashMap<String, Object>(); ParentMap.put("parent_title", "三木铁板烧" + i); ParentMap.put("parent_address", "8." + i); ParentMap.put("parent_distance", "1" + i); ParentMap.put("parent_distance1", "已售123" + i); childList.add(ParentMap); } HashMap<String, Object> map = new HashMap<String, Object>(); map.put("child_item_title", "九州八拖二火锅" + i); map.put("child_item_price_old", "4." + i + "分"); map.put("child_item_price_score", "(100人)"); map.put("parent_lv", childList); parentList.add(map); } parentAdapter = new ParentAdapter(parentList, QianTaoListviewActivity.this); listView.setAdapter(parentAdapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Intent intent = new Intent(QianTaoListviewActivity.this, Activity_1.class); Toast.makeText(QianTaoListviewActivity.this, "第" + arg2 + "个条目", Toast.LENGTH_LONG).show(); startActivity(intent); } }); } }