1

多くのテキスト (ラベル) とチェックボックスを含む 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% を節約できます。

この問題の良い解決策はありますか?

4

1 に答える 1

1

このrender属性は、スペースで区切られた複数のコンポーネント ID の文字列を受け入れます。render全体ではなく、属性で目的の入力のコンポーネント ID を指定できます@form

ビューのマークアップは無効です ( labelforと inputを混同しているように見えます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式も受け入れることに注意してください。これが動的に生成されたフォームである場合、および/または ID とチェックボックスの数が Bean で事前にわかっている場合は、次のようなものを使用できるはずです。

    <f:ajax execute="@form" render="#{bean.allCheckboxIds}" />
于 2011-10-18T14:29:33.423 に答える