Pregunta

Tengo un formulario en JSF 2.0 con mucho texto (etiquetas) y casillas de verificación. El texto nunca se actualiza al enviar, pero los valores de la casilla de verificación sí.

Por ejemplo:

<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>

El problema es que cada vez que hago un envío, todo el contenido del formulario se ha vuelto a renderizar. Me gustaría que los valores de la casilla de verificación se vuelvan a renderizar. Esto podría ahorrar el 90% del tamaño de la solicitud.

¿Hay una buena solución para este problema?

¿Fue útil?

Solución

los render El atributo acepta una cadena separada de espacio de ID de componentes múltiples. Puede especificar los ID de componente de las entradas deseadas en el render atributo en lugar del conjunto @form.

Su marcado de vista no es válido (parece que usted confundió la etiqueta for con entrada id), pero al punto debería verse así:

<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>     

Tenga en cuenta que también acepta una expresión de EL. Si este es un formulario generado dinámicamente y/o el ID y el número de casillas de verificación se conocen de antemano en el bean, entonces debería poder usar algo como:

    <f:ajax execute="@form" render="#{bean.allCheckboxIds}" />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top