`
andyjames
  • 浏览: 30979 次
  • 性别: 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

    NULL 博文链接:https://zhangyulong.iteye.com/blog/1009371

    java面试宝典

    2、作用域public,private,protected,以及不写时的区别? 8 3、String 是最基本的数据类型吗? 8 4、float 型float f=3.4是否正确? 8 5、语句float f=1.3;编译能否通过? 8 6、short s1 = 1; s1 = s1 + 1;有什么错? 8...

    struts_2.3.12GA_API文档(chm版本)

    public void setFieldErrors(Map,List&lt;String&gt;&gt; errorMap)从接口 ValidationAware 复制的描述 Set the field error map of fieldname (String) to Collection of String error messages. 指定者: 接口 ...

    Struts in Action中文版

    2.4.4. Struts如何实现 Model 2, MVC, 和分层............................................................49 2.5. Struts 控制流...............................................................................

    struts in Action

    2.4.4. Struts 如何实现Model 2, MVC, 和分层............................................................49 2.5. Struts 控制流................................................................................

    FreeMark学习笔记

    为了访问数据模型中名为struts2的书的作者的名字,可以使用如下语法: book.author.name //全部使用点语法 book["author"].name book.author["name"] //混合使用点语法和方括号语法 book["author"]["name"] //全部使用...

    freemarker总结

    list指令是一个迭代输出指令,用于迭代输出数据模型中的集合,list指令的语法格式如下: &lt;#list sequence as item&gt; ... &lt;/#list&gt; 上面的语法格式中,sequence就是一个集合对象,也可以是一个表达式,但该表达式将返回...

    千方百计笔试题大全

    2、作用域public,private,protected,以及不写时的区别? 8 3、String 是最基本的数据类型吗? 8 4、float 型float f=3.4是否正确? 8 5、语句float f=1.3;编译能否通过? 8 6、short s1 = 1; s1 = s1 + 1;有什么错? 8...

    java基础题 很全面

    64. List、Map、Set三个接口,存取元素时,各有什么特点? 14 65. UML方面 14 66. 说出一些常用的类,包,接口,请各举5个 14 67. 开发中都用到了那些设计模式?用在什么场合? 15 68. Anonymous Inner Class (匿名内部类) ...

    最新Java面试宝典pdf版

    8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...

    Java面试宝典2010版

    8、说说struts1与struts2的区别。 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 11、iBatis与...

    Java面试笔试资料大全

    8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...

    Java面试宝典-经典

    8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...

    JAVA面试宝典2010

    8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...

    java面试题大全(2012版)

    8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...

    Java面试宝典2012版

    8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11...

    java面试宝典2012

    8、说说struts1与struts2的区别。 132 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 133 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 133 11、...

Global site tag (gtag.js) - Google Analytics