Struts2学习笔记(不定期更新)
最近一直在学struts2,为了给以后做网站打下基础。到官网去看文章,内容很多,顾用此日志当作笔记本,记录一下自己的收获。由于之前看了一个电子版的struts2介绍(2.0.x版本),所以以下主要涉及那本书没有讲到的或2.1.x版已经更新的内容。本文内容不保证正确性,并不定期更新,对一切后果不负责!
Get Started文档:
- <result type="redirectAction">SomeAction</result>中如果SomeAction不存在,则会渲染SomeAction.jsp。
- 2.1.X版本在<s:url …>中改用var。(2.0.x中用<s:url id="xxx">)
struts-2-spring-2-jpa-ajax文档:
- 数据库字段映射类需要用@Entity、@Id、@GeneratedValue注解。(这是Hibernate的配置)
- CRUD服务类需要用@Transactional、@PersistenceContext等注解。(这是Spring注入框架的配置)
- 配置JPA、Spring、Dojo。(struts2要用到的技术,分别是关于数据库、bean注入、Ajax)
crud-demo-i:
- <s:action name="department!list" id="allDepartments">来调用某Action。解决了列表显示问题。例如,用#和%{}来用它:<s:select name="gender" list="%{#allDepartments.departments}" /> 。
- 直接用<s:textfield name="employee.name">传值,struts2会在相应的Action中创建一个Employee类,再调用getEmployee.setName方法。(Note:可以限制哪些东西可以被注入)
- %{employee.name} 如果没有employee,那么Struts2会实例化一个Employee,然后调用它的getName()。结果还是null,除非有默认值。在<s:textfiled value="…">里像这样用有助于重用表单。
- 一个例子:<s:select name="gender" list="%{#{'male':'Male', 'female':'Female'}}" />
- 验证器调用的是Action中的getter,而不是request值。这就是说,验证器调用的是,request值注入Action后,再用getter得到的值。
其他:
- 在Action之后执行验证器:
public String intercept(ActionInvocation act) throws Exception {
//在Action之前执行的代码
......
//开始执行Action
String result=actionInvocation.invoke();//
//在Action之后的代码
......
//结束拦截器
return result;}
未完待续……