Question

J'ai une forme JSF 2.0 avec beaucoup de texte (étiquettes) et des cases à cocher. Le texte ne sont mis à jour à soumettre, mais les valeurs de case à cocher fait.

Par exemple:

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

Le problème est que chaque fois que je fais soumettre, tout le contenu du formulaire est été réaffichée. Je voudrais seulement les valeurs de cases à cocher pour être réaffichée. Cela pourrait économiser 90% de la taille de la requête.

Y at-il une bonne solution pour ce problème?

Était-ce utile?

La solution

L'attribut render accepte un espace séparé chaîne d'ID multiples composants. Vous pouvez spécifier les ID composantes des entrées souhaitées dans l'attribut render au lieu de l'ensemble @form.

Votre balisage de vue est invalide (regarder comme vous confondre avec l'étiquette for entrée id), mais au point où elle devrait ressembler à ceci:

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

Notez qu'il accepte une expression EL ainsi. Si cela est une forme générée dynamiquement et / ou l'ID et le nombre de cases à cocher sont connus à l'avance dans le haricot, alors vous devriez être en mesure d'utiliser quelque chose comme:

    <f:ajax execute="@form" render="#{bean.allCheckboxIds}" />
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top