方法1(使用 seam api):
import org.jboss.seam.security.digest.DigestUtils;
public String hash(String password){
return new DigestUtils().md5Hex(password.getBytes("Big5"));
}
方法2(使用 Apache Jakarta 專案的 Commons codec):
import org.apache.commons.codec.digest.DigestUtils;
public String hash(String password){
//1.3版的只有提供 MD5、SHA 的編碼,如果想要完整的 SHA 編碼,請下載 1.4-snapshot
return new DigestUtils().md5Hex(password.getBytes("Big5"));
}
方法3(使用 java api + seam api):
import java.security.MessageDigest;
import org.jboss.seam.util.Hex;
public String hash(String password){
try{
//MessageDigest 可傳入的演算法參數有 MD2、MD5、SHA-1、SHA-256、SHA-384、SHA-512
MessageDigest md = MessageDigest.getInstance("MD5");
//字串轉 byte 可指定不同的 charsetName,但其中的差異要傳入的 password 非單純的英數字組合才看的出來
md.update(password.getBytes("Big5"));
return new String(Hex.encodeHex(md.digest()));
}catch(Exception e){
throw new RuntimeException(e.getMessage());
}
}
2008年9月24日 星期三
2008年9月22日 星期一
[備忘記]rich:menuItem 的 action 內容自動異動??
我遇到一個怪現象
當我使用 Seam 來開發網站時
我有一個 menu.xhtml 的模板,用來放功能列表。其中的 rich:menuItem 元件 action="/special/A.xhtml" 屬性被我設定要跳轉的指定網頁
但是當我由A網頁,經由 jPDL 導向至B網頁後
原本模版內 rich:menuItem 的 action="/special/B.xhtml" 屬性居然自動變成 B 網頁的連結 !???
解答===================================================================================
應該是因為用了 jPDL 來作為網頁導向的緣故。
當某一個網頁被歸為 jPDL 管理後,
如果想要強制導向其他不存在於設定內的其他網頁,
就會發生錯誤。
至於導向後原先在模板內預先設定好的功能列表連結,
經 jPDL 導向後會自動改變是因為有設定 的緣故,
此設定會將所有連結隱藏起來。
當我使用 Seam 來開發網站時
我有一個 menu.xhtml 的模板,用來放功能列表。其中的 rich:menuItem 元件 action="/special/A.xhtml" 屬性被我設定要跳轉的指定網頁
但是當我由A網頁,經由 jPDL 導向至B網頁後
原本模版內 rich:menuItem 的 action="/special/B.xhtml" 屬性居然自動變成 B 網頁的連結 !???
解答===================================================================================
應該是因為用了 jPDL 來作為網頁導向的緣故。
當某一個網頁被歸為 jPDL 管理後,
如果想要強制導向其他不存在於設定內的其他網頁,
就會發生錯誤。
至於導向後原先在模板內預先設定好的功能列表連結,
經 jPDL 導向後會自動改變是因為有設定
此設定會將所有連結隱藏起來。
2008年8月21日 星期四
[Seam]如何設定多國語系訊息
請在 Seam 的 framework 設計內以下列方法配置:
1.建立訊息檔。名稱請自訂,但語言碼_國碼請依循 lc[_CC],lc 為 ISO-639 語言碼、CC 為 ISO-3166 國碼。若需要其他語系,請以相同訊息名稱以 _ 連接後加語言碼_國碼,例:messages_zh_TW.properties
2.將全部訊息檔放至 /WEB-INF/classes 下。
3.設定 faces_config.xml。如下:
<application>
<locale-config>
<default-locale>zh_TW</default-locale>
</locale-config>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
4.設定 components.xml。如下:
<core:resource-loader>
<core:bundle-names>
<value>messages</value>
</core:bundle-names>
</core:resource-loader>
這樣就可以了....^^
1.建立訊息檔。名稱請自訂,但語言碼_國碼請依循 lc[_CC],lc 為 ISO-639 語言碼、CC 為 ISO-3166 國碼。若需要其他語系,請以相同訊息名稱以 _ 連接後加語言碼_國碼,例:messages_zh_TW.properties
2.將全部訊息檔放至 /WEB-INF/classes 下。
3.設定 faces_config.xml。如下:
<application>
<locale-config>
<default-locale>zh_TW</default-locale>
</locale-config>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
4.設定 components.xml。如下:
<core:resource-loader>
<core:bundle-names>
<value>messages</value>
</core:bundle-names>
</core:resource-loader>
這樣就可以了....^^
2008年8月14日 星期四
[Seam]重複載入SeamPhaseListener
今天要用JBoss Application Server執行 HRMS 的 Seam 專案時
出現了如下的錯誤訊息
Caused by java.lang.IllegalStateException with message: "No phase id bound to current thread (make sure you do not have two SeamPhaseListener instances installed)"
回去看啟動 log 也發現它有顯示這個錯誤
13:23:30,522 WARN [SeamPhaseListener] There should only be one Seam phase listener per application
上網 google 後找到的解法.....
[8/25更新]
這錯誤困擾我兩個多禮拜,直到今天才解決(應該吧....)
由於我之前使用 war 來建立專案,但卻無法有效執行 TestNG,直到發現問題出在應該以 ear 來建立 EJB3 專案才解決(嗯...這也反映基本功不夠會出現很多笑話)
OK...TestNG 可以過了那就來試試看實際網頁長怎樣
RUN...居然出現...No phase id bound to current thread (make sure you do not have two SeamPhaseListener instances installed)
這是啥呀?
去 google 查,有人說是因為同一時間內載入了兩個以上的 SeamPhaseListener
好....那就來找看看是哪個 jar 檔或設定檔多做了這動作(因為我是直接用精靈產生專案,應該很好找吧!!)
...
...
(光陰似箭....兩個禮拜過去)
......媽呀....居然怎麼都找不到....
死了....不會就這樣專案胎死腹中吧....(這其間還想到要找顧問來解救算了)
不死心地上 google 再拜一次(其實每天都在拜)
這次用 "jbds seamphaselistener" 當 keyword,幸運的讓我在 [url=http://seamframework.org/Community/ProblemWithJboss423]jboss community[/url] 找到有人也發生這錯誤,也有人沒有發生這錯誤
依據內容,我就想試試看是不是 JBoss AS 的問題
果不其然,再將 JBoss AS 4.2.3 換成 JBoss As 4.2.2 以後就沒有這問題了
雖然問題解決了,但心中還是有不踏實的感覺
出現了如下的錯誤訊息
Caused by java.lang.IllegalStateException with message: "No phase id bound to current thread (make sure you do not have two SeamPhaseListener instances installed)"
回去看啟動 log 也發現它有顯示這個錯誤
13:23:30,522 WARN [SeamPhaseListener] There should only be one Seam phase listener per application
上網 google 後找到的解法.....
[8/25更新]
這錯誤困擾我兩個多禮拜,直到今天才解決(應該吧....)
由於我之前使用 war 來建立專案,但卻無法有效執行 TestNG,直到發現問題出在應該以 ear 來建立 EJB3 專案才解決(嗯...這也反映基本功不夠會出現很多笑話)
OK...TestNG 可以過了那就來試試看實際網頁長怎樣
RUN...居然出現...No phase id bound to current thread (make sure you do not have two SeamPhaseListener instances installed)
這是啥呀?
去 google 查,有人說是因為同一時間內載入了兩個以上的 SeamPhaseListener
好....那就來找看看是哪個 jar 檔或設定檔多做了這動作(因為我是直接用精靈產生專案,應該很好找吧!!)
...
...
(光陰似箭....兩個禮拜過去)
......媽呀....居然怎麼都找不到....
死了....不會就這樣專案胎死腹中吧....(這其間還想到要找顧問來解救算了)
不死心地上 google 再拜一次(其實每天都在拜)
這次用 "jbds seamphaselistener" 當 keyword,幸運的讓我在 [url=http://seamframework.org/Community/ProblemWithJboss423]jboss community[/url] 找到有人也發生這錯誤,也有人沒有發生這錯誤
依據內容,我就想試試看是不是 JBoss AS 的問題
果不其然,再將 JBoss AS 4.2.3 換成 JBoss As 4.2.2 以後就沒有這問題了
雖然問題解決了,但心中還是有不踏實的感覺
2008年6月16日 星期一
[Seam]Component.xml 的 event tag
寫這篇的時候我還不清楚 component.xml 到底是在 seam 內負責啥功能?
所以在看到 event tag 的時候自然會有一種疑問.....
這些事件是哪來的呀?
雖然文件內的說明指出它是內建的
但是看了 API 卻還是不曉得其對應關係是怎樣?
事件名稱:org.jboss.seam.notLoggedIn
API:org.jboss.seam.security.NoLoggedInException
事件名稱:org.jboss.seam.postAuthenticate
API:找不到
整一個搞不清楚中......@@
所以在看到 event tag 的時候自然會有一種疑問.....
這些事件是哪來的呀?
雖然文件內的說明指出它是內建的
但是看了 API 卻還是不曉得其對應關係是怎樣?
事件名稱:org.jboss.seam.notLoggedIn
API:org.jboss.seam.security.NoLoggedInException
事件名稱:org.jboss.seam.postAuthenticate
API:找不到
整一個搞不清楚中......@@
訂閱:
文章 (Atom)