Ленивая загрузка частей шовных страниц? - PullRequest
1 голос
/ 29 апреля 2009

Я работаю над приложением-швом (2.1.1.GA под JBoss AS 4.2.2), где у определенного есть несколько (иногда больших) разделов, которые не нужно отображать, пока пользователь не взаимодействует с этим конкретным раздел, подумайте вдоль заголовка статьи, где пользователь нажимает на заголовок, и он раскрывается, чтобы показать поле, содержащее текст.

Я могу реализовать это без каких-либо проблем с Seam и Richfaces, но содержимое всех разделов загружается в браузер, когда пользователь впервые загружает страницу. Есть ли в любом случае эти разделы (которые могут содержать или не содержать элементы управления richfaces) для загрузки по требованию с помощью ajax?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 30 апреля 2009

много способов.

Просто установите rendered = "false" на поле и затем повторно замените его родительский контейнер, когда вы щелкнете по заголовку.

например. Там, где у вас есть логическое значение showContent в вашем компоненте поддержки, которое переключается методом toggleContent ():

<a4j:commandLink 
   value="This is a title" 
   ajaxSingle="true" 
   reRender="contentDiv" 
   action="#{someBackingBean.toggleContent}"/>

<a4j:outputPanel id="contentDiv">
   <a4j:outputPanel rendered="#{someBackingBean.showContent}">
      This is some text that is not rendered when the page loads
   </a4j:outputPanel>
</a4j:outputPanel>

РЕДАКТИРОВАТЬ: в ответ на комментарий. Другой способ сделать это - использовать функцию a4j: jsFunction (очень удобно) и некоторый JavaScript.

<h1 onclick="toggleContent(this);">This is a title</h1>
<a4j:outputPanel id="contentDiv">
   <a4j:outputPanel rendered="#{someBackingBean.showContent}">
      This is some text that is not rendered when the page loads
   </a4j:outputPanel>
</a4j:outputPanel>

<script>
function toggleContent(element) {
   //check if the contentDiv has any contents (maybe check if element has a child under contentDiv)

   //if it doesn't then call a4j:jsFunction to load the contentDiv eg. loadContent();

   //hide or show div depending on the current state of it
}
</script>

<a4j:jsFunction name="loadContent" action="#{someBackingBean.toggleContent}" reRender="contentDiv"/>

Как-то так.

0 голосов
/ 01 июля 2009

Что делать, если вы используете прокручиваемую таблицу. Как реализовать выборку данных в чанках?

Ragards Marko

...