`
andyjames
  • 浏览: 31439 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Struts2 Map嵌套List实现

阅读更多

最近一直在研究struts2,看了sturts2和博客的相关文章,学习了Struts2 Map嵌套List实现,下面是是示例演示:

要求:一个业务线对应一个目录树


过程:

1.页面前一个Action中实现ServletRequestAware接口

2.Action中将serviceTypesCategories 放入request

private Map<String, List<Category>> serviceTypesCategories = new HashMap<String, List<Category>>();

request.setAttribute("serviceTypesCategories", serviceTypesCategories);

3.JSP页面代码

<s:iterator value="%{serviceTypesCategories.keySet()}" id="serviceTypeString" >
<s:set name="serviceTypeRequest" scope="request" value="#serviceTypeString"/>
       <s:text name="preferential_servicestype"/>:<s:property value="serviceTypeString"/><
br>
     <%
       Map<String, List<Category>> serviceTypesCategories = (Map<String, List<Category>>) request
           .getAttribute("serviceTypesCategories");
       String servicetype = (String) request.getAttribute("serviceTypeRequest");
       PreferentialCheckTreeUtil util = new PreferentialCheckTreeUtil();
       List<Category> myCategories = serviceTypesCategories.get(servicetype);
       List<Category> rootCategories = new ArrayList<Category>();

       out.println(" <script language=\"JavaScript\">");
       out.println("var check" + treeIndex + " = new CheckTree('check" + treeIndex + "');");
       out.println("</script>");

       out.println(" <ul id=\"tree-check" + treeIndex + "\" class=\"checktree\">");

       for (Category category : myCategories) {
         if (category.getLevel() == 1) {
           rootCategories.add(category);
         }
       }
       final PrintWriter mcpsOut = response.getWriter();
       for (Category rootCategory : rootCategories) {
         // out.println(rootCategory.getName());
         //判定是否是当前层的最后一个节点
         if (rootCategory.getId() == rootCategories.get(rootCategories.size() - 1).getId()) {
           util.printCategoryWithCheck(rootCategory, out, true);
         }
         else {
           util.printCategoryWithCheck(rootCategory, out, false);
         }
       }
       out.println("</ul>");
       treeIndex++;
     %>
</s:iterator>

注意:这里使用了<S:SET/>标签,并且设置scoperequest,如果不放入request中,会出现页面偶尔显示不出来的情况,

原因是: <s:iterator value="%{serviceTypesCategories.keySet()}" id="serviceTypeString" >

默将serviceTypeString放入stack context中,并非reqeust.

 

分享到:
评论
1 楼 风中落叶 2008-10-16  
printCategoryWithCheck[align=center][/align][size=small][/size]

相关推荐

    Struts中List里嵌套Map

    在处理复杂数据结构时,Struts框架提供了灵活的数据绑定能力,其中包括在List中嵌套Map的情况。这个主题主要涉及到如何在Struts的ActionForm或者Action类中接收并处理这种复杂的数据结构,以及在JSP页面上进行展示。...

    struts2 表单数据绑定map、list等.rar

    本资源“struts2 表单数据绑定map、list等.rar”着重讲解了Struts2如何处理表单数据,特别是如何将表单数据绑定到Map和List等集合类型。了解这些内容对于构建动态、复杂的Web应用至关重要。 在Struts2中,数据绑定...

    iterator嵌套,struts2

    在Struts2框架中,`iterator`标签是一个非常重要的组件,用于遍历各种集合对象,如List、Map等。在上述描述中,开发者遇到了一个关于`iterator`标签嵌套使用的问题,涉及到`LinkedHashMap`存储的数据结构。让我们...

    在struts2中要实现for循环

    `&lt;s:iterator&gt;`标签是Struts2中最常用的标签之一,它可以用来遍历集合(如List、Set、Map等)。但是,如果想要实现类似Java中的`for`循环功能,可以利用`org.apache.struts2.util.Counter`类来实现。 ### 实现步骤 ...

    struts2标签大全

    10. **s:iterator标签**:用于迭代集合,常用于遍历列表、数组或Map,可以在循环内部嵌套其他Struts2标签。 11. **s:property标签**:用于显示Action类属性的值,可以格式化输出,支持EL表达式。 12. **s:debug...

    Jxls结合Struts2下载

    6. **数据绑定**:在Struts2 Action中,你需要准备一个数据集(如List或Map),这将与Excel模板的占位符对应起来。Jxls会根据模板的结构自动填充数据。 7. **文件流处理**:在Struts2中,使用`response....

    Java struts2 ongl 标签 jsp页面

    它还支持动态构造容器,如`{"green", "red", "blue"}`创建List,`{"key1" : "value1", "key2" : "value2", "key3" : "value3"}`创建Map。 5. **静态方法和变量的访问**: 要调用类的静态方法或访问静态变量,可以...

    Struts2页面取值总结

    - **迭代遍历**: `&lt;s:iterator value="userList" ...&gt;`用于遍历集合如List或Map,配合`&lt;s:property&gt;`展示集合中的每个元素。 - **URL生成**: `&lt;s:url action="" ...&gt;`用于生成URL并可通过`s:param`子元素传递参数。...

    ognl struts2

    6. 表达式嵌套:OGNL支持复杂的嵌套表达式,如`object.property1.property2`。 四、Struts2中的OGNL安全问题 虽然OGNL提供了极大的灵活性,但这也带来了安全隐患。著名的“Struts2 OGNL注入”漏洞就源于对用户输入...

    struts2学习笔记

    Struts2是一个基于MVC设计模式的Java web框架,它极大地简化了开发过程,并提供了强大的功能。在Struts2中,OGNL(Object Graph Navigation Language)是表达式语言,用于在视图层与模型层之间进行数据绑定和交互。...

    struts2_ognl基本用法.doc

    ### Struts2 OGNL 基本用法详解 #### 一、访问值栈中的Action及对象属性 OGNL(Object-Graph Navigation Language)是Struts2框架中用于访问和操作Java对象的一种强大表达式语言。在Struts2中,OGNL主要用于访问值...

    java相关的Struts2-Json插件的使用例子.pdf

    Struts2 JSON插件是Java开发中用于处理JSON数据的一个工具,主要目的是为了方便Web应用在前后端交互时,能够快速地将Action对象转换为JSON格式的字符串,从而实现Ajax或者JSONP请求的响应。JSON(JavaScript Object ...

    Struts2 使用OGNL遍历map方法详解

    本文将深入讲解如何使用OGNL遍历Map对象,以展示Struts2在处理复杂数据结构时的灵活性。 首先,让我们来看一下`MapAction`类的代码。在这个例子中,我们定义了四个不同类型的Map对象: 1. `private Map, String&gt; ...

    struts2标签.doc

    `&lt;s:iterator&gt;`:这是最常用的标签之一,用于遍历集合(如List、Map等),并可以嵌套使用其他标签。 M. `&lt;s:merge&gt;`:合并遍历集合的值,方便处理集合数据。 N. `&lt;s:optgroup&gt;` 和 `&lt;s:option&gt;`:在下拉框中创建...

    Struts常见的Form(一)

    通过这些不同类型的Form Bean,开发者可以在Struts框架下灵活地处理各种用户输入,实现复杂的数据验证和业务逻辑。实践中的选择应根据具体的应用场景和需求来确定,以达到最佳的代码组织和维护性。在实际项目中,...

    Struts详细资料整理

    2. **EL与Map** - EL也可以用于访问Map类型的对象。 - 示例:`("map", map) %&gt;`, `${map.key1}` 访问`key1`对应的值。 通过以上介绍可以看出,合理利用Struts框架提供的工具和技术,可以有效地组织代码结构,提高...

    struts2 的标签库

    5. **迭代标签`&lt;s:iterator&gt;`**:这个标签用于遍历集合,如`&lt;s:iterator value="userList" id="user" status="u"&gt;`,其中`value`属性指定要迭代的集合(如List或Map),`id`属性用于在循环内部引用当前项,`status`...

    OGNL学习笔记,包含struts2中ognl的各种用法

    至于循环控制,可以通过嵌套`&lt;s:iterator&gt;`标签实现。 总的来说,OGNL是Struts2中强大的表达式语言,它简化了视图层与模型数据之间的交互,使得开发者能够更便捷地操作和展示业务逻辑中的各种数据。通过学习和熟练...

    常用struts1遍历方法

    ### 常用Struts1遍历方法 在Struts框架中,对于数据集合...无论是简单的List还是复杂的Map,甚至是多层嵌套的结构,都能够很好地支持。掌握这些遍历技巧,能够帮助开发者更加高效地处理数据,提升Web应用的用户体验。

    Struts Taglibs 标签

    6. `&lt;logic:iterate&gt;`: 遍历集合对象,如数组、List或Map,常用于循环输出。 7. `&lt;tiles:insert&gt;`: 插入一个预定义的页面模板或组件。 8. `&lt;html:errors&gt;`: 显示ActionForm中验证错误消息。 三、使用Struts ...

Global site tag (gtag.js) - Google Analytics