Struts2平时用的时候遗忘和新的知识点
2013-09-22 17:20
204 查看
1.
2.<s:debug>这个标签在用的时候需要注意:如果采用了懒加载机制,此标签会导致出错,因为<s:debug>会将一个javabean里所有属性都加载出来显示在s:debug上,而此时懒加载了,s:debug就无法显示属性。
3.值桟的生命周期是一次requert,所以当多个action之间进行redirectAction(重定向)跳转,值桟里只有最后一个action的实例在栈顶。如果是chain跳转,那么经过几个action,值桟中就存在几个action。
4.<s:date name="publishTime" format="yyyy-MM-dd HH:mm:ss.SSS" /> struts2的这个日期标签是用来显示值的,而不是用于设置的,因为没文本框让你设值。
5.struts2中如果需要使用redirectAction跳转,而且希望在跳转的时候给action带几个参数,可以在跳转前的那个action将参数放到map栈中,在xml中用%{属性}或${属性}取值
注意:如果要传递多个参数给xml,那么url肯定需要用&进行分割,但是&在xml中关键字,需要进行转义&否则的话struts2无法运行,访问项目一直404。
6.struts2和ajax整合的时候,返回ajax数据返回的是action中所有get方法后第一个字母小写的属性,例如getName,就会返回name属性。但是,因为在action中,是注入了service的,如果用xml配置的方式,那么势必要生成service的get和set方法,这时,ajax会把service当作一个属性返回给ajax的,就会出错了。解决办法就是在service的get方法上加@JSON(serialize=false),让服务器不将这个属性作为json数据返回给客户端
7.在ajax和struts2结合的时候发现,返回类型为String的get方法都会在执行完指定方法后执行一遍。所以以下做法是很要命的,因为访问的url只是要执行showMenuitemById,而getAllMenuitem是自动执行的,两个方法中都用到了menuitemList全局变量,所以最后页面拿到的json数据是错误的。
正确的方法,就将那个get方法改为其他名字,例如show什么的。这样就不会去执行了。
8.struts2和ajax结合的时候发现,当客户端发送请求后,服务器查询了hibernate一对多的一的这一方,然后发送json数据给客户端,此时就算web.xml中配置了OpenSessionInViewFilter,也会因为懒加载多的一方,因为session关闭问题而出异常。
这是为什么呢?
原因就是,由于服务器返回的是json对象,而不是一张页面数据,OpenSessionInViewFilter是不起作用的,所以获取在获取多的一方的时候session已经关闭了。
解决办法:让其忽略多的一方属性,这样多的一方就不会返回到客户端,也就不会因为客户端在一的一方取多的一方时,而出现session关闭的异常了。
如果返回的数据必须是多表的,那么在dao层就将三个表需要的数据查询出来。
<s:iterator value="schoolBeautyOrHunks" var="user"> <s:property value="#user.email"/><!-- var这个别名,是将当前遍历对象以 user----当前对象 key---value形式存在于map栈 ,所以取值的时候要用#--> </s:iterator>
2.<s:debug>这个标签在用的时候需要注意:如果采用了懒加载机制,此标签会导致出错,因为<s:debug>会将一个javabean里所有属性都加载出来显示在s:debug上,而此时懒加载了,s:debug就无法显示属性。
3.值桟的生命周期是一次requert,所以当多个action之间进行redirectAction(重定向)跳转,值桟里只有最后一个action的实例在栈顶。如果是chain跳转,那么经过几个action,值桟中就存在几个action。
4.<s:date name="publishTime" format="yyyy-MM-dd HH:mm:ss.SSS" /> struts2的这个日期标签是用来显示值的,而不是用于设置的,因为没文本框让你设值。
5.struts2中如果需要使用redirectAction跳转,而且希望在跳转的时候给action带几个参数,可以在跳转前的那个action将参数放到map栈中,在xml中用%{属性}或${属性}取值
注意:如果要传递多个参数给xml,那么url肯定需要用&进行分割,但是&在xml中关键字,需要进行转义&否则的话struts2无法运行,访问项目一直404。
<action name="AdminActivityCheck_*" class="com.wah.activity.action.Activity_AdminCheckAction" method="{1}"> <result name="checkUserJoinActivityAction" type="redirectAction">AdminActivity_checkUserJoinActivityUi.action?id=%{activityId}&a m p;name=%{name}</result> </action>
6.struts2和ajax整合的时候,返回ajax数据返回的是action中所有get方法后第一个字母小写的属性,例如getName,就会返回name属性。但是,因为在action中,是注入了service的,如果用xml配置的方式,那么势必要生成service的get和set方法,这时,ajax会把service当作一个属性返回给ajax的,就会出错了。解决办法就是在service的get方法上加@JSON(serialize=false),让服务器不将这个属性作为json数据返回给客户端
7.在ajax和struts2结合的时候发现,返回类型为String的get方法都会在执行完指定方法后执行一遍。所以以下做法是很要命的,因为访问的url只是要执行showMenuitemById,而getAllMenuitem是自动执行的,两个方法中都用到了menuitemList全局变量,所以最后页面拿到的json数据是错误的。
正确的方法,就将那个get方法改为其他名字,例如show什么的。这样就不会去执行了。
public String getAllMenuitem(){ this.menuitemList = menuitemService.getAllMenuitem(); return SUCCESS; } public String showMenuitemById(){ menuitemList = menuitemService.showMenuitemById(this.getModel().getPid()); return SUCCESS; }
8.struts2和ajax结合的时候发现,当客户端发送请求后,服务器查询了hibernate一对多的一的这一方,然后发送json数据给客户端,此时就算web.xml中配置了OpenSessionInViewFilter,也会因为懒加载多的一方,因为session关闭问题而出异常。
这是为什么呢?
原因就是,由于服务器返回的是json对象,而不是一张页面数据,OpenSessionInViewFilter是不起作用的,所以获取在获取多的一方的时候session已经关闭了。
解决办法:让其忽略多的一方属性,这样多的一方就不会返回到客户端,也就不会因为客户端在一的一方取多的一方时,而出现session关闭的异常了。
如果返回的数据必须是多表的,那么在dao层就将三个表需要的数据查询出来。
public class Order{ private Set<User> users; @JSON(serialize=false)// private Set<User> getUsers(){ return users; } }
相关文章推荐
- MySQL容易遗忘的知识点 - Draft
- Struts2-部分知识点概述与解释
- 学徒的时候安卓老知识点总结汇总 (新手应该大概了解的)
- 【Struts2复习知识点四】-Path路径问题(转载)
- 为什么整合Spring与Struts2的时候,必须定义Struts2 Bean的Scope
- 06年的CS Sub,挺像考研考纲的。。平时学习的时候,可以参考一下~
- Struts2知识点
- 【Struts2复习知识点三】-Action的配置
- 【Struts2复习知识点十】-中文问题
- 安卓容易遗忘的知识点
- Struts2学习中的重要知识点
- 知识点摸清 - - function()——JavaScript 函数名后什么时候加括号,什么时候不
- 遗忘---零散知识点2
- struts2 错误消息显示(s:fielderror )的时候老有前面的那个黑点,郁闷死了,感觉特别不爽,下面总结了集中解决的方法
- Struts2知识点小结
- 那些不能遗忘的知识点回顾——计算机网络系列(笔试面试高频题)
- 整合Struts2+SiteMesh+Spring+MyFaces(JSF)+Freemarker的时候启动服务器报错ClassNotFoundException: org.apache.struts2.sitemesh.FreeMarkerPageFilter
- 【Struts2复习知识点五】-ActionMethod 动态指定调用方法(转载)
- 那些不能遗忘的知识点回顾——计算机网络系列(转)
- 【Struts2复习知识点四】-Path路径问题