天天看點

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