<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-4  評論-14  文章-0  trackbacks-0
    EasyJWeb中提供了一些注解,可以給開發帶來很多方便。這些注解包括有數據驗證用的@FormPO、@Validator等;IOC注入用的@Inject、@InjectDisable等;action配置用的@Action等。
    今天我們來說說action配置時要用的注解@Action,使用這些注解可以大量減少配置文件的編寫。
    首先,我們來看看不使用這些注解的時候是怎么做的,以一個hello world程序為例。
    首先是action:
    public class HelloAction extends AbstractCmdAction
    {
        
    private IHelloService servie;

        
    public IHelloService setService(IHelloService service){
            
    this.service = service;
        }


        
    public Page doHello(WebForm form, Module module){
            System.out.println(service.sayHello());
            
    return null;
        }

    }

    service:
    public interface IHelloService{
        String sayHello();
    }

    service實現:
    public class HelloServiceImpl implements IHelloService
    {
        
    public String sayHello(){
            
    return "hello";
        }

    }

    如果要使這個程序正常運行,我們還需要配置service和action,easyjweb中默認集成spring,service是在spring的配置文件中配置:
        <bean id="helloService"    class="com.hello.service.impl.HelloServiceImpl">
        
    </bean>

    現在來配置action,在easyjweb的配置文件中這樣配置:
            <module name="hello" path="/hello" form="" scope="request"
                action
    ="com.hello.mvc.HelloAction" defaultPage="list"
                inject
    ="byType">

            
    </module>
    這里說說這個inject="byType",這樣配置之后在HelloAction中的屬性會自動根據類型來注入。inject還有byName等屬性,意思就是根據名字來注入。如果這里不加這個inject,那么配置文件就應該是這樣寫:
            <module name="hello" path="/hello" form="" scope="request"
                action
    ="com.hello.mvc.HelloAction" defaultPage="list"
                inject
    ="byType">
         
    <property name="service" ref="helloService" />
            
    </module>
    property的name屬性對應HelloAction中的service,名字要保持一致。ref對應上面在spring中配置的helloService的id。
    到這里,這個程序就可以運行了。
    一個簡單的hello程序就用了這么多配置文件,這讓人難以忍受。現在我們就來說說怎么使用EasyJWeb的注解來簡化配置。
    我們修改一下HelloAction的代碼,給這個類加上一個@Action注解:
    @Action(path="hello")
    public class HelloAction extends AbstractCmdAction
    {
        
    private IHelloService servie;

        
    public IHelloService setService(IHelloService service){
            
    this.service = service;
        }


        
    public Page doHello(WebForm form, Module module){
            System.out.println(service.sayHello());
            
    return null;
        }

    }

    這樣一來,我們就不需要easyjweb中配置的module了,當使用hello.ejf訪問的時候框架會自動把請求交給HelloAction處理。
    現在來簡單介紹一下@Action這個注解。
    @Action的各個屬性說明如下:
    name用來指Action的名稱,也是在容器中的Bean名稱,我們一般不使用這個屬性。
    path用來指定模塊的path值,也即所映射的url,如果不設值該值將會按照缺省的方式處理。
    alias用來指定這個模塊的path別名,也就是可以使用其它的一個或多個名稱來訪問這個模塊。
    inject用來指定Action中所有業務組件注入方式,默認值為按類型注入。如果為byName則表示按名稱注入,auto表示自動按名稱或類別注入,none則表示不注入。
    disInject用來標識不自動注入的屬性。
    autoInject用來標識允許自動注入的屬性。
    autoToken表示該模塊是否需要開取自動防重復提交功能;
    validate表示該模塊是否開取自動驗證功能,默認情況不開啟自動驗證;
    view表示該模板的視圖存放子目錄。
    scope用來指定這個Action在容器中的創建方式及生命周期,默認值為request,表示每次請求創建一次該對象,若為session則表示個用戶會話創建一個對象,若為singleton表示整個容器中只創建一次該實例。
    messageResource表示多國語言屬性文件的存放子目錄。
    通常我們只用到path、view、inject這幾個屬性,由于inject的默認值為"AutoJnjectByType",是最常用的,因此通常也不需要顯式指定這個屬性值。而disInject是用來標識不允許注入的屬性的,當我們的action出現了一些不需要注入的屬性時,如logger,我們就需要使用這個屬性來指定哪些是不需要注入的。autoToken則是標識是否開啟防重復提交功能的。

    posted on 2007-12-28 13:36 天 一 閱讀(1202) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 黄色片网站在线免费观看| 亚洲人成高清在线播放| 一个人免费观看日本www视频| 久久久久久国产a免费观看黄色大片| 亚洲Aⅴ无码专区在线观看q| 日韩电影免费在线观看中文字幕| 亚洲国产精品无码一线岛国| 国产免费一区二区视频| 亚洲精品自产拍在线观看动漫| a级毛片免费高清毛片视频| 亚洲国产精品国自产拍AV| 午夜免费啪视频在线观看| 亚洲精品一卡2卡3卡三卡四卡| 成年人网站免费视频| 亚洲伊人久久大香线蕉AV| 国产亚洲福利一区二区免费看| 一区二区3区免费视频| 国产V亚洲V天堂无码久久久| 亚洲一区在线免费观看| 亚洲AV无码一区二区三区牲色| 无码欧精品亚洲日韩一区夜夜嗨 | 日韩一级视频免费观看| 青草久久精品亚洲综合专区| 亚洲伊人成无码综合网| 5g影院5g天天爽永久免费影院| 亚洲成_人网站图片| 免费一级毛片清高播放| 久久免费精彩视频| 亚洲日本一线产区和二线产区对比| 免费人成视频在线观看视频| 最新国产乱人伦偷精品免费网站 | EEUSS影院WWW在线观看免费| 久久精品亚洲综合| 最近最新的免费中文字幕| 一级做α爱过程免费视频 | 亚洲日本在线电影| 国产亚洲一区二区精品| 18禁超污无遮挡无码免费网站国产| 一个人看的免费观看日本视频www 一个人看的免费视频www在线高清动漫 | 中国一级特黄的片子免费 | 激情亚洲一区国产精品|