I am trying to refresh all fields in a form as I click a checkbox:
<h:selectBooleanCheckbox id="#{id}"
styleClass="checkbox"
value="#{value}"
required="#{required}"
disabled="#{not empty readonly and readonly ? true : disabled}"
onclick="showLoading();" >
<a4j:support event="onchange" reRender="pessoaDocumentoIdentificacaoForm" oncomplete="hideLoading();" />
</h:selectBooleanCheckbox>
The problem is pessoaDocumentoIdentificacaoForm, it's JBoss seam. All fields in this form are refreshed, except these stated at tipoDocumento value...
<components xmlns="http://jboss.com/products/seam/components"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.2.xsd
http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.2.xsd
http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.2.xsd">
<component name="pessoaDocumentoForm" class="br.com.itx.component.Form">
<property name="formId">pessoaDocumentoIdentificacao</property>
<property name="fields">
<value>nome:{required:true,type: inputTextDocumentoIdentificacao, properties : {rendered: #{not justicaTrabalho},label: 'Nome registrado neste documento'}}</value>
<value>tipoDocumento:{type: comboPessoaTipoDocumento, required: true,
properties:{items: #{preCadastroPessoaBean.isPermiteEdicaoDocumentosPrincipais() ? 'tipoDocumentoIdentificacaoItems' : 'tipoDocumentoIdentificacaoSemDocumentosPrincipaisItems'}}}</value>
<value>usadoFalsamente: {required: false, type: sim_nao, properties: {rendered: #{not justicaTrabalho}}}</value>
<value>documentoPrincipal: {type: checkBoxDocumentoPrincipal, properties: {rendered: #{not justicaTrabalho}}}</value>
<value>ativo: {required: true, type: radioSituacao}</value>
</property>
<property name="buttons">gravarDocumentoPessoa</property>
</component>
</components>
...the true conditional of that decision (isPermiteEdicao) redirects to these fields that a4j cannot refresh:
<component name="tipoDocumentoIdentificacaoItems" class="br.com.itx.component.SelectItemsQuery">
<property name="ejbql">select o from TipoDocumentoIdentificacao o</property>
<property name="restrictions">
<value>o.tipoPessoa = #{pessoaDocumentoIdentificacaoHome.instance.pessoa.inTipoPessoa}</value>
<value>o.tipoPessoa = #{pessoaHome.instance.inTipoPessoa}</value>
</property>
<property name="order">tipoDocumento</property>
Gotcha!
Following this issue, I added AjaxSingle="true"
to my method, like shown below:
<a:support event="onchange" reRender="pessoaDocumentoIdentificacaoForm" oncomplete="hideLoading();" ajaxSingle="true" />