2012-12-19 46 views
1

我需要幫助!我花了幾天時間尋找解決方案來解決以下用例。請原諒我沒有代碼。在兩個單獨的jsf頁面之間傳遞值

一個網絡輸入/編輯形式:

用戶詳細信息 - 包含用戶名,uploadfileName等,和 '保存' 和 '上傳' 按鈕,在他的細節

  1. 用戶填寫
  2. 用戶點擊「上傳」
  3. 系統打開Primefaces的FileUpload屏幕
  4. 用戶上傳圖片
  5. 系統關閉Primefaces FileUpload自定義屏幕
  6. 系統使用上傳的 fileName更新uploadfileName outputText。
  7. 用戶單擊以保存用戶詳細信息。
  8. 系統驗證並保存用戶詳細信息。

Primefaces文件上傳定製畫面:該被嵌入在對話框和是在一個單獨的XHTML文件(可重用性)。

問題是如何通過Upload對話框中的uploadedfileName值來更新調用(主)用戶頁面中的uploadfileName outputText。

例如,在Vaadin中,在Trinidad的情況下,可以使用ActionListener或ReturnActionListener。

感謝您的幫助(提前)。

回答

0

將bean放入視圖範圍。然後,同一個視圖中的所有表單都可以使用同一個bean實例。

@ManagedBean 
@ViewScoped 
public class Register { 
    // ... 
} 

您可以將視圖範圍化的bean彼此注入。您可以在註冊表單的bean中注入上載表單的bean,並在action方法中訪問它。

@ManagedBean 
@ViewScoped 
public class Register { 

    @ManagedProperty("#{upload}") 
    private Upload upload; 

    // ... 
} 

不要緊,如果它是物理上獨立的頁面,只要將其包括在例如一個相同的母版視圖<ui:include>或組合,則在回發中維護相同的視圖狀態。

+0

感謝BalusC,爲您快速回復。如果您的解決方案有效,我會回來再多謝。我已經在這個問題上浪費了很多時間,我需要從中解脫出來。 BTW這是否意味着我彈出的包含Primefaces FileUpload的dialog.xhtml不能包含f:view? –

+0

爲什麼要這樣呢?它最終只是同一個HTML頁面的一部分,並且絕對不應該包含''。請注意,我假設你正在使用''。 – BalusC

+0

是的,你的假設是正確的。感謝您的額外信息。 –