JSF Обновить без Ajax - PullRequest
       7

JSF Обновить без Ajax

0 голосов
/ 07 декабря 2010

Я занимаюсь разработкой веб-приложения, которое использует JSF 1.2 для слоя представления. В прошлом мы могли использовать Ajax для обновления частей страницы. Однако мы получили требование поддерживать устройства Blackberry, включая BB OS 5.x. Браузер по умолчанию для этого устройства имеет очень ограниченную поддержку JS.

Например, допустим, у меня есть первоначальный категорический список с опциями (Фрукты, Мясо, Овощи)

<h:selectOneMenu id="foodCategorySelection" value="#{obj.foodCategory}">
  <f:selectItem itemLabel="Select Food Category..." />
  <f:selectItems value="#{foodService.foodCategories}" />
</h:selectOneMenu>

Я бы хотел обновить страницу, чтобы в следующем поле выбора отображались только продукты из выбранной категории продуктов

<h:selectOneMenu id="foodSelection" value="#{obj.food}">
  <f:selectItem itemLabel="Select a Food..." />
  <f:selectItems value="#{foodService.filteredFoods}" />
</h:selectOneMenu>

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

1 Ответ

2 голосов
/ 07 декабря 2010

Для тех, у кого (ограниченная) поддержка JS, просто дайте раскрывающемуся списку отправить JS форму при изменении:

<h:selectOneMenu onchange="submit()">

В компоненте заполните 2-й выпадающий список на основе предоставленного значения 1-го выпадающего списка. Вы можете сделать это методом valueChangeListener, который прикреплен к 1-му выпадающему.

Для тех, у кого нет поддержки JS, добавьте кнопку отправки рядом с 1-м раскрывающимся списком, чтобы конечный пользователь мог вручную отправить форму после выбора значения в 1-м раскрывающемся списке. Вы заполняете 2-й выпадающий список в методе действия компонента, который прикреплен к кнопке отправки.

...