%
<s:select>
list:需要进行迭代的list集合
listKey:需要提交的值
listValue:需要在页面上显示的值
============================
优化
1.Action
Action中存在重复的代码
从DepartmentAction/RoleAction/UserAction中抽取一个公共的BaseAction.
1.BaseAction中使用泛型,泛型的具体类型(Class)通过在构造方法中得到.
如果model为null,就用具体类型newInstance()生成model.为什么model可能不为null?
2.Dao和Service==>3层改成两层
去掉dao层的具体的实现类xxxDaoImpl.而让service直接操作数据库
service中直接使用session对数据库进行操作.
1.service接口可以继承BaseDao
2.ServiceImpl可以继承BaseDaoImpl
注意:在BaseDaoImpl上添加@Transactional注解
@Transactional可以被继承
如果没有这个注解,在调用getCurrentSession()获取session时,会报错:
No Hibernate session bounded to ...
3.jsp
/WEB-INF/jsp/public/common.jspf
1.抽取公共的js文件生成公共的common.jspf,然后在页面中用<%@ include file="/WEB-INF/jsp/public/common.jspf"%>调用(静态包含和动态包含)
common.jspf中除了包含公共的js外,还包含公共的自定义标签的导入
2.addUI.jsp和editUI.jsp==>改成save.jsp
一般情况下,添加页面和修改页面可以使用同一个.
1.<s:hidden name="id"/>
2.<s:form action="departmentAction_%{id == null ? 'add' : 'edit'}"/>
最后修改struts.xml中<result>对应的jsp页面
==================================================
完成增删改查功能的步骤
一、做action相关的准备
1.创建xxxAction extends BaseAction
2.定义出Action中的方法,要写出方法名、作用、返回值
3.创建出所用到的jsp页面(内容先不写)
4.配置:
1.Spring==>在xxxAction上添加注解@Controller和@Scope
2.Struts2==>在struts.xml中添加
<action name="" class="" method="">..</action>
二、做service相关的配置
1.创建接口XxxService继承BaseDao
2.创建实现类XxxServiceImpl继承BaseDaoImpl
3.配置:在XxxServiceImpl上添加注解@Service
4.声明:在BaseAction上声明各个service作为成员变量,并在变量上添加注解@Resource
三、填空
1.Action方法
.......
2.新增的的Service方法
3.jsp页面的内容
1.拷贝静态页面中的方法到jsp中
2.<%@ include file="/WEB-INF/jsp/public/common.jspf"%>
3. ../替换成${pageContext.request.contextPath}/
4.改页面内容(使用自定义标签)
1.列表页面
<s:iterator value="..">
<s:a action=".." onclik="">
注意:onclick中的c小写
2.表单页面(saveUI.jsp)
<s:form action="departmentAction_%{id==null?'add':'edit'}">
<s:hidden name="">
<s:textfield>
<s:textarea>
<s:select name="" list=".." listKey=".." listValue="..">
<s:radio name="gender" list="#{'男':'男','女':'女'}" listKey="" listValue="">
其中:#{'男':'男','女':'女'}可以简写成#{'男','女'}
<s:checkbox>
<s:submit>
</s:form>
<select multiple="true" size="10">对应的struts标签
<s:select name="" mutiple="true" cssClass="" list="#roleList" listKey="id" listValue="name">
未完成的任务
// TODO
Tasks