2014-03-04 51 views
3

這不是一個問題,更多的是一個筆記。 在Glassfish4中,在JEE7應用程序中,我嘗試使用流程作用域使用編程流程定義(Java類使用@Produces @FlowDefinition註釋)。流程範圍導航到起始頁不起作用

我導航到啊流的起始頁:命令按鈕(只是因爲它是在JEE7教程示例https://svn.java.net/svn/javaeetutorial~svn/trunk/examples/web/jsf/checkout-module 當我按下它停留在同一個頁面,其中按鈕是按鈕完成,而不是。 。要流動的起始頁

幾個小時的痛苦之後,我意識到這個問題是在beans.xml中,在我的beans.xml我有這樣的:

bean-discovery-mode="annotated" 

這是建議的設置根據文檔(http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/beans_1_1.xsd)。 當我將其更改爲

bean-discovery-mode="all" 

它開始工作。

不知何故CDI不會將流定義識別爲帶註釋的類。我試圖讓它成爲@Named類或者@ApplicationScoped類,但其中沒有一個有幫助。 我不知道這是預期的行爲還是錯誤。

希望它能爲我們節省幾個人。

回答

0

謝謝!

當然,您總是可以使用XML聲明作爲您的視圖。如創建一個文件example/example-flow.xml與內容如

<?xml version='1.0' encoding='UTF-8'?> 
<faces-config version="2.2" 
      xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
      http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"> 
    <flow-definition id="example"> 
    <flow-return id="actionId" > 
     <from-outcome>#{somebean.returnValue}</from-outcome>     
    </flow-return> 
    </flow-definition> 
</faces-config> 
1

這與CDI如何檢測豆檔案。當bean-discovery-mode="annotated"時,只有註冊了bean defining annotations的類才被CDI接收;請注意,@Named@FlowScoped不在該列表中。

正因爲如此,正如您在此處記錄的,使用Flow註釋需要設置bean-discovery-mode="all"

有一個spec issue開放討論如果這是一個理想的行爲。