OA中总结:s:select,关于使用modelDriven,项目分层,@Transactional,jspf,各个层上配置注解交给spring管理的方法,简单的OGNL表达式写法

%
<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

时间: 2024-12-29 14:28:35

OA中总结:s:select,关于使用modelDriven,项目分层,@Transactional,jspf,各个层上配置注解交给spring管理的方法,简单的OGNL表达式写法的相关文章

解析MySQL中INSERT INTO SELECT的使用

1. 语法介绍有三张表a.b.c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段.对于这种情况,可以使用如下的语句来实现:INSERT INTO db1_name (field1,field2) SELECT field1,field2 FROM db2_name  上面的语句比较适合两个表的数据互插,如果多个表就不适应了.对于多个表,可以先将需要查询的字段JOIN起来,然后组成一个视图后再SELECT FROM就可以了: INSERT INTO a (field1,field2

ie 8-td中怎样使select标签, 图片,居底部对齐

问题描述 td中怎样使select标签, 图片,居底部对齐 三个分别在三个td中,设置td和图片的属性为vertical-align:bottom,在火狐和谷歌浏览器中,居底部对齐,但在IE8中无效果 请问要怎样才能在IE8浏览器中都居底部对齐 解决方案 为ie8写hack,用margin或者td的padding调一下,应该可以吧

web 工程中struts 的select标签 如何让其选定其中的一项

问题描述 web 工程中struts 的select标签 如何让其选定其中的一项 下面是原式 headerValue="全部" listKey="key" listValue="value"> </s:select> 如何让他选定其中的一项, 就好比 <select> <option>1</option> <option selected>2</option> <

hive中:insert select limit 1 值变化

问题描述 hive中:insert select limit 1 值变化 hive 0.10.0中使用insert into xxx select a,b from zzz limit 1的方式向表xxx中插入数据.结果发现每次插入的数据都是不一样的. 然后单独测试select a,b from zzz limit 1 不论多少次,结果都是一样的. 求教,这是为什么?

jsp问题-JSP中如何获取select中每个oiption的值(不管选中与否)

问题描述 JSP中如何获取select中每个oiption的值(不管选中与否) 我的select里面的option是动态添加的,且option都没有name,仅有text和value 解决方案 没有ID?没有NAME 都没有一个唯一标识,如果是只是一个还好获取,多个就会出现混乱的情况 解决方案二: jsp获取还是js获取??

html-如何在页面中控制显示select的openion数量。。。。。。。。。。。

问题描述 如何在页面中控制显示select的openion数量........... 假如有10个数据.我想只显示5条,多的显示滚动条,有大神指点一下吗 解决方案 http://www.iefans.net/css3-shuxing-user-select-kongzhi-xuanze-fanwei/ 解决方案二: 如果你是指select(单选)弹出的下拉选项,那个控制不了,需要用前天插件模拟select,如select2 如果是多选,可以指定size属性 <select multiple si

mysql中insert与select的嵌套使用方法_Mysql

本文讲述了mysql中insert与select的嵌套使用的方法,对于初学MySQL的朋友有一定的借鉴价值. 这里需要实现在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现该功能需求.具体情形是:有三张表a.b.c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段.对于这种情况,我们可以使用如下的语句来实现: INSERT INTO db1_name(field1,field2) SELECT field1,field2 FROM db2_name 当然,上

关于jquery中动态增加select,事件无效的快速解决方法_jquery

近来做项目,用的jquery1.6.2库,当动态增加div 及select时,事件却不起作用. 查了一些资料,发现bind事件:向匹配元素附加一个或更多事件处理器.而live事件:为当前或未来的匹配元素添加一个或多个事件处理器. 其资料如下: [bind和live的区别] live方法其实是bind方法的变种,其基本功能就同bind方法的功能是一样的,都是为一个元素绑定某个事件,但是bind方法只能给当前存在的元素绑定事件,对于事后采用JS等方式新生成的元素无效,而live方法则正好弥补了bin

c#-C#中的DataTable.Select列名为纯数字时,怎么写?

问题描述 C#中的DataTable.Select列名为纯数字时,怎么写? C#中,如果列名为纯数字的话,写在条件中,会被认为是一个常数, 在SQL中可以加上中括号"[]",在C#中,要怎么写? 解决方案 感谢各位! 我师父找到问题所在了,是因为我添加列的时候,为指定列类型,默认为string类型了. 总结: 纯数字的列是没问题的,跟SQL一样,加中括号"[]"就可以了. 解决方案二: 好像也是可以的.我没试过 参考:http://www.cnblogs.com/D