創建工程后會生成一大堆代碼。基本上都是配置文件。而在做 Seam 開發的過程中是不需要整天修改配置文件的。最多寫寫pages.xml或者faces-config.xml。Seam生成的文件夾如下面的結構:
resources文件夾里就一個文件。XXXX-ds.xml。是用于存放數據源(DataSource)配置文件的。
src:
src下有兩個文件夾:action和modal。即存放頁面動作與領域模型。
在modal中有個META-INF文件夾,JPA的配置文件persistence.xml就存放在這個文件夾里。
在Modal文件夾里還有幾個值得注意的文件。
比如messages_en.properties和security.drl。messages_en.properties是存放系統消息的。
如果想讓Seam的系統消息顯示中文就需要翻譯這個文件。而security.drl則是定義安全規則的。
在action文件夾中。有一個包:org\domain\SeamTest\session。其中Authenticator.java會自動生成。用于做登陸驗證的。在這里簡單介紹下,先看代碼:


















@Logger用于注入日志組件
@In 用于雙向注入。在注入時Seam會尋找當前容器中與該變量名相符的組件。當然了。也可以注入變量名不同的組件。需要指定組件名稱,例如:@In("ident")。這樣的意思就是在容器中尋找名為"ident"的組件將其注入到該類中。(Seam的作用域比較復雜,本篇暫不介紹)
接下來便是authenticate方法,這個方法中其實最重要的是后面兩句。log.info(....)的意思即保存日志信息,最后那句意思即通過驗證。如果驗證的用戶名密碼不符合則return false;來表示拒絕登陸。比較復雜的是identity.addRole。這個方法是為當前用戶添加一個角色。單如果該方法最終返回false。那么這些添加的角色將不保存。
那么。如何讓Seam知道當用戶登陸時調用這個方法驗證呢?在/WebContent/WEB-INF/components.xml中有這樣一段配置:






這就是剛剛說的那個文件。
既然說到components.xml,那我們就來看下這個文件里還有些什么東西。










conversation-id-parameter用于定義conversation的reuqest parameter name。即因為用戶現在在哪個頁面流中需要瀏覽器回傳一個參數才知道。
parent-conversation-id-parameter。conversation允許定義子頁面流。這個屬性定義瀏覽器回傳父conversation的參數名









其他:默認生成的 face-config.xml里沒有支持中文。可以加入











