Domanda

Ho una forma in JSF 2.0 con un sacco di testo (etichette) e caselle di controllo. Il testo non si aggiorna su di presentare, ma i valori checkbox fa.

Ad esempio:

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

Il problema è che ogni volta che faccio un invio, l'intero contenuto del modulo è stato ri-renderizzati. Vorrei solo i valori casella di controllo per essere ri-renderizzati. Questo potrebbe risparmiare il 90% della dimensione richiesta.

C'è una soluzione buona per questo problema?

È stato utile?

Soluzione

L'attributo render accetta una stringa separata spazio di più ID di componente. È possibile specificare gli ID dei componenti degli ingressi desiderati nell'attributo render anziché l'intero @form.

La vista markup è valido (guarda come si confonde for un'etichetta con id ingresso), ma al punto che dovrebbe essere simile a questo:

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

Si noti che accetta un'espressione EL pure. Se questa è una forma generato dinamicamente e / o l'ID e il numero di caselle di controllo sono noti in anticipo nel fagiolo, allora si dovrebbe essere in grado di usare qualcosa come:

    <f:ajax execute="@form" render="#{bean.allCheckboxIds}" />
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top