2011年12月20日 星期二

JSF CDI

最近終於要開始真正去寫驗證程式了,但是接連兩天的想用最新出爐的 Oracle WebLogic 12C 來寫 JSF with CDI,卻遇到一些怪問題,趁還有記憶趕快記一下。

Prequirements

  • IDE : Eclipse Indigo 3.7

  • J2EE Container : Oracle WebLogic 12C Enterprise Server

  • JDK : jdk 1.6+ (x86)  (note : 截至post文日期,Oracle僅發布了x86的 weblogic 12c)

  • Plugins: JBoss Tools 3.3 Nightly Build ( note : 截至post文日期,Jboss仍未發布JBoss Tools 3.3 正式版)


以下用新增專案時的畫面參考:

[caption id="attachment_534" align="alignnone" width="636" caption="add new web project"]add new web project[/caption]

[caption id="attachment_535" align="alignnone" width="624" caption="specify a web.xml"]specify a web.xml[/caption]

[caption id="attachment_536" align="alignnone" width="750" caption="CDI support"]CDI support [/caption]

在專案屬性 --> Project facets --> 勾選CDI

[caption id="attachment_537" align="alignnone" width="750" caption="project facets cdi support"]project facets cdi support[/caption]

檢閱 CDI Further configuration available,會看到 generate beans.xml設定(務必打勾)

[caption id="attachment_538" align="alignnone" width="530" caption="generate beans.xml"]generate beans.xml[/caption]

勾選 Project facets 中的 JSF 2並按OK

[caption id="attachment_539" align="alignnone" width="519" caption="jsf 2.x"]jsf 2.x[/caption]

再次打開project properties,Java Server Faces記得選用  WebLogic shared Library

[caption id="attachment_540" align="alignnone" width="750" caption="weblogic shared library"]weblogic shared library[/caption]

撰寫backing bean,backing  bean 的 設置需要特別注意,不要誤用了jsf managed bean package

[caption id="attachment_541" align="alignnone" width="400" caption="Backing bean"]Backing bean[/caption]

Presentation jsf page,這時候已經可以看到JSF Content Assist with backing bean

[caption id="attachment_542" align="alignnone" width="750" caption="jsf content assist"]jsf content assist[/caption]

最後跑看看吧~

[caption id="attachment_543" align="alignnone" width="710" caption="Hello Page"]Hello Page[/caption]

跑到這其實算是初步可以開始寫JSF 2.x了,但是在先前的測試過程中,發現如果沒有在WEB-INF\ 放置一個空的 beans.xml,會無法正確執行 CDI ,有把這問題拋到 javaranch去問人了,若有人知道這個beans.xml存在的真正意義的話,煩請不吝分享阿:D

沒有留言: