2010-01-09 58 views
1

HTML表單有一些文本框和一個下拉框。 下拉菜單具有巨大的價值,並且需要花費大量時間從數據庫中獲取。如何加載頁面首先閱讀數據庫

所以我想先加載頁面,而用戶填寫表單(文本框),我想加載下拉框(沒有他的知識:-))。

但沒有任何事件觸發器,我該如何再次調用數據庫?

我正在使用JSF和RichFaces,Servlet。

下面的代碼是不工作

<h:selectOneMenu value="#{obj.selectedValue}"> 
     <f:selectItems value="#{obj.allValues}" /> 
     <a4j:support selfRendered="true" action="#{bean.action}"/> 
    </h:selectOneMenu> 

感謝,

回答

0

在你的頁面的底部把下面:

<a4j:jsFunction name="yourJsFunction" action="#{bean.fetchSelectItems}" 
    reRender="yourDropdown" /> 

window.onload = yourJsFunction(); 
0

你將不得不使用AJAX。當頁面加載時顯示一個空的選擇框。然後編寫一些JavaScript,在您的服務器上調用一些URL,以返回選擇框的選項。而當你得到那些只是用這些值填充選擇框。 請注意,您的表單對沒有JavaScript的用戶無效。

+0

但調用的URL將刷新頁面?不是嗎? – crazyTechie 2010-01-09 11:52:24

+0

你必須使用AJAX(就像我說過的),所有這些都發生在後臺,而用戶不知道你正在提供一些額外的數據...... – 2010-01-09 11:53:18

1

+1使用Ajax - 但是如果您有大量的值,那麼您可能需要考慮使用自動完成下拉列表 - 用戶開始輸入他們需要的內容,並在他們鍵入了一些內容後字符,你可以啓動你的ajax請求並只加載那些匹配的請求。

看看「谷歌建議」,如果你想看到這個動作

-Ace

1

前面已經提到,您可以使用AJAX異步加載下拉的項目,但我會建議重新設計形式,以便不需要巨大的下拉菜單。也許讓用戶在之前或之後的屏幕上搜索正確的值?長時間的下拉菜單不易使用,因爲它們需要大量的滾動操作,並且很難在大型列表中找到正確的值。