最近一直在研究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/>标签,并且设置scope为request,如果不放入request中,会出现页面偶尔显示不出来的情况,
原因是: <s:iterator value="%{serviceTypesCategories.keySet()}" id="serviceTypeString" >
默将serviceTypeString放入stack context中,并非reqeust中.
分享到:
相关推荐
NULL 博文链接:https://zhangyulong.iteye.com/blog/1009371
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...
public void setFieldErrors(Map,List<String>> errorMap)从接口 ValidationAware 复制的描述 Set the field error map of fieldname (String) to Collection of String error messages. 指定者: 接口 ...
2.4.4. Struts如何实现 Model 2, MVC, 和分层............................................................49 2.5. Struts 控制流...............................................................................
2.4.4. Struts 如何实现Model 2, MVC, 和分层............................................................49 2.5. Struts 控制流................................................................................
为了访问数据模型中名为struts2的书的作者的名字,可以使用如下语法: book.author.name //全部使用点语法 book["author"].name book.author["name"] //混合使用点语法和方括号语法 book["author"]["name"] //全部使用...
list指令是一个迭代输出指令,用于迭代输出数据模型中的集合,list指令的语法格式如下: <#list sequence as item> ... </#list> 上面的语法格式中,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...
64. List、Map、Set三个接口,存取元素时,各有什么特点? 14 65. UML方面 14 66. 说出一些常用的类,包,接口,请各举5个 14 67. 开发中都用到了那些设计模式?用在什么场合? 15 68. Anonymous Inner Class (匿名内部类) ...
8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...
8、说说struts1与struts2的区别。 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 11、iBatis与...
8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...
8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...
8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...
8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...
8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11...
8、说说struts1与struts2的区别。 132 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 133 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 133 11、...