Как ajax рендеринг только входы вместо всей формы?

StackOverflow https://stackoverflow.com/questions/7808858

  •  26-10-2019
  •  | 
  •  

Вопрос

У меня есть форма в JSF 2.0 с большим количеством текста (метки) и флажками. Текст никогда не обновляется при отправке, но значения флажки делают.

Например:

<h:form>

  <h:outputLabel value="bla bla bla bla .. X 1000" id="lab1">
  <h:selectBooleanCheckbox for="lab1">

  <h:outputLabel value="bla bla bla bla .. X 1000" id="lab2">
  <h:selectBooleanCheckbox for="lab2">

  .... many more labels and checkboxes ...

  <h:commandButton>
      <f:ajax render="@form" execute="@form" />
  </h:commandButton>     

</h:form>

Проблема заключается в том, что всякий раз, когда я делаю представление, весь содержание формы повторно разрешено. Я бы хотел, чтобы просто значения флажок были повторно разъединены. Это может сэкономить 90% от размера запроса.

Есть ли хорошее решение для этой проблемы?

Это было полезно?

Решение

А render Атрибут принимает пространство, разделенную строкой нескольких идентификаторов компонентов. Вы можете указать идентификаторы компонентов желаемых входов в render атрибут вместо всего @form.

Ваша разметка представления недействительна (похоже, вы запутались for с вводом id), но до такой степени, что это должно выглядеть так:

<h:outputLabel value="bla bla bla bla .. X 1000" for="lab1">
<h:selectBooleanCheckbox id="lab1">

<h:outputLabel value="bla bla bla bla .. X 1000" for="lab2">
<h:selectBooleanCheckbox id="lab2">

.... many more labels and checkboxes ...

<h:commandButton>
    <f:ajax execute="@form" render="lab1 lab2 lab3 lab4 ..." />
</h:commandButton>     

Обратите внимание, что он также принимает выражение EL. Если это динамически сгенерированная форма, и/или идентификатор и количество флажков известны заранее в бобах, то вы сможете использовать что -то вроде:

    <f:ajax execute="@form" render="#{bean.allCheckboxIds}" />
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top