Как загрузить страницу сначала и прочитать базу данных - PullRequest
1 голос
/ 09 января 2010

Форма HTML имеет несколько текстовых полей и выпадающий список. Выпадающий список имеет огромные значения и требует много времени для извлечения из базы данных.

Итак, я хочу сначала загрузить страницу, и пока пользователь заполняет форму (текстовые поля), я хочу загрузить выпадающий список (без его ведома :-)).

Но без какого-либо триггера событий, как я могу снова вызвать базу данных?

Я использую JSF с RichFaces, Servlet.

Следующий код не работает

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

Спасибо

Ответы [ 4 ]

1 голос
/ 09 января 2010

+ 1 для использования Ajax - но если у вас очень большое количество значений, тогда вы можете рассмотреть возможность использования выпадающего списка автозаполнения - когда пользователь начинает вводить то, что ему нужно, и после того, как он набрал несколько символов , вы запускаете запрос ajax и просто загружаете те запросы, которые совпадают.

взгляните на "Google предлагает", если вы хотите увидеть это в действии

* 1005-ACE *

1 голос
/ 10 января 2010

Как уже упоминалось, вы можете использовать AJAX для асинхронной загрузки выпадающих элементов, но я бы предложил изменить форму так, чтобы огромный выпадающий список не требовался. Возможно, позволить пользователю искать правильное значение на предыдущем или последующем экране? Длинные выпадающие списки не просты в использовании, так как требуют большой прокрутки, и может быть трудно найти правильное значение в большом списке.

0 голосов
/ 11 января 2010

Внизу вашей страницы поставьте следующее:

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

window.onload = yourJsFunction();
0 голосов
/ 09 января 2010

Вам придется использовать AJAX. Когда страница загружается, отображается пустое поле выбора. Затем напишите некоторый JavaScript, который вызовет какой-то URL на вашем сервере, который вернет опции для поля выбора. И когда вы получите это, просто заполните поле выбора этими значениями. Имейте в виду, что ваша форма будет бесполезна для тех, у кого нет JavaScript.

...