2012-05-04 74 views
1

我正在嘗試追查我的CDI對話中存在的問題。如果我通過我的應用程序採用一條路線,那麼我有一個工作頁面,但如果我經過另一個路線,則無法工作。我相信這是談話相關的東西,但我無法弄清楚什麼。發生這樣的導致對話ID增加的原因

工作流程:

  1. 加載網頁A
  2. 打開編輯頁面一個
  3. 在這一點上,一個新的對話是從1開始
  4. 製作編輯的ID和保存返回我頁面A
  5. 點擊鏈接進入A頁加載頁面B
  6. 打開編輯頁面B
  7. 對話以ID 2開頭。在此開始處按刷新將開始ID爲3的對話。其他刷新會增加對話ID。
  8. 編輯成功時

工作流,其中它不工作是這樣的: 發生這樣的工作流程:

  1. 加載網頁的網頁A到A
  2. 點擊鏈接載入頁面B
  3. 打開編輯頁面B
  4. 對話以ID 1開始。刷新頁面會告訴我,我的對話ID是sti ll 1.
  5. 頁面上的各種操作會拋出「WELD-000321找不到恢復ID爲1的對話」異常。

所以這兩個工作流程之間的差異,在工作流程我做一個成功的編輯&當我爲我的第二個編輯頁面上,我得到增量對話的ID。不工作的工作流程,對話ID始終爲1,但我什麼也做不了!

,我想了解的事情是:

  1. 如果我有1 ID的交談,做一些事情,然後結束談話,當我開始一個新的對話 - 會是什麼的ID是? 1(如此對話結束時)或2(下一個未使用的ID)。
  2. 除了談話沒有被正確結束之外,還有什麼東西想要我看到的遞增對話ID?據我所知,我正確地結束了我的談話。

希望對其中之一的答案能夠揭示出現問題的一些原因。感謝您的任何輸入

+0

記住張貼一些代碼?視圖和支持豆? – LightGuard

回答

0

從您寫的內容來看,聽起來好像會話的啓動和傳播有問題。沒有你描述的問題,用例肯定是可以實現的。你可能想在這裏發佈一些相關的代碼。

如果我有1 ID的對話,然後做一些結束 交談,當我開始一個新的對話 - 將它的ID是什麼呢? 1(正如本次會話結束時)或2(下一個未使用的ID)。

未指定CDI創建新ID的方式。焊接執行以下操作:

public class ConversationIdGenerator implements Callable<String>, Serializable { 

    public static final String CONVERSATION_ID_GENERATOR_ATTRIBUTE_NAME = ConversationIdGenerator.class.getName(); 

    private static final long serialVersionUID = 8489811313900825684L; 

    // The next conversation ID 
    private final AtomicInteger id; 

    /** 
    * Creates a new conversation ID generator 
    */ 
    public ConversationIdGenerator() { 
     this.id = new AtomicInteger(1); 
    } 

    public String call() { 
     int nextId = id.getAndIncrement(); 
     return String.valueOf(nextId); 
    } 

} 

有什麼除了沒有正確 結束了談話,就是想遞增對話的ID,我 看?據我所知,我正確地結束了我的談話。

不,你沒有在這裏失蹤。最有可能的問題將出現在你的代碼中(這是個好消息,因爲你可以改變它:-)

相關問題