2008-12-20 27 views
3

我是JSF世界的新手,請幫助我在頁面中生成彈出窗口。在JSF中生成彈出框

這是我的要求我會在我的母版頁(父母)點擊每個鏈接我需要顯示一個彈出窗口,其中包含一些細節,我需要從數據庫中獲取流行註冊mbean。在彈出的對話框中,我將彈出幾個按鈕,對於每一個操作,我都會相應地進行數據庫操作。我嘗試過不同的方式,但失敗了。

我面臨的問題是,第一次彈出加載時它很好,並且按預期投影值。但它第二次顯示在init函數中的新值,我不能在屏幕上看到新的值,而是顯示第一個彈出的值。

+0

當你說「彈出窗口」是指新的瀏覽器窗口還是新的模式彈出窗口(例如浮動div)? – Damo 2009-03-26 00:21:22

回答

0

所以(如果我正確理解你的問題),問題是第二次修改的bean的值沒有前往前端?

我很驚訝,這取決於它是否彈出或不彈出。

的幾點思考:

  • 據推測當您打開此彈出你只是訪問一個頁面,即http://localhost:8080/myApp/myPopupURL
  • mbean(當你說mbean時,你的意思是你訪問的一個java對象,對吧#{name.javaBeanField}吧?)request或session scoped?
  • 你在做什麼來得到這個結果?你是否點擊彈出鏈接,然後再次點擊該鏈接(預計已經打開的彈出窗口刷新)?或者你是否點擊鏈接,關閉彈出窗口並再次點擊鏈接?或者你是否點擊鏈接,然後刷新彈出窗口?

我目前沒有正在運行的JSF安裝程序,但是如果我這樣做了,我會嘗試使用鏈接創建單個JSF頁面。該鏈接將打開一個彈出窗口,指向一個靜態URL(如上面的示例)。靜態URL會映射到一個非常簡單的mbean,它做了一些簡單的事情,比如顯示一個int值,它是一個介於1到100萬之間的隨機數。

獲得這種工作至少可以排除其他任何錯誤的可能性。我有時會遇到JSF隨機出現異常並使用舊值刷新頁面的問題(因爲生命週期沒有完成)。

0

不確定它是否是標準的JSF(我很確定它不是,實際上),但是你的支持bean中應該有一個isPostBack()方法,它允許你知道你是否正在加載頁面第一次或在行動後重新加載它;如果可以使用isPostBack()方法,則只能在第一次加載頁面時從數據庫加載值,而不會覆蓋操作後的修改後的值。

0

好像與我有關的緩存,但檢查以下內容:

  • 你調試,並看到Bean中 正確的價值觀;
  • 您是否確定它是從表格 獲取值的;
  • 確定瀏覽器第二次點擊 服務器?和
  • 你解析了日誌(並激活它們!)並確保沒有錯誤?
1

您是否檢查了您的faces-config.xml文件以確保您的bean在請求範圍內?

<managed-bean-scope>request</managed-bean-scope> 

如果bean是在會話或應用範圍,豆是不是重新創建每次刷新頁面,以便在bean中的值不會改變時間。

0

瞭解如何顯示彈出窗口以及是否使用某個JSF組件來執行此操作將非常有用。如果您只是顯示一個隱藏的div(或者在加載母版頁時加載一次的任何內容),則可能不會再次渲染該div,因此數據未實現。