H:selectBooleanCheckbox disabled

Pessoal,

Estou tentando utilizar o comando

<h:selectBooleanCheckbox id="checkespecialidade" onchange="desabilitar()" disabled="#{ManterItemOrcamentoMB.desabilitachek}"

Este checkbox carrega varios , conforme a tela1.jpg e escolhe por exemplo 1 item.

mas quando eu clico ele entra no Bean, e volta com disable true, devido a esta linha :


	public void selecionarEspecificacao() {
		this.desabilitachek = false;
             ......
		this.desabilitachek = true;

e ele retorna a tela2.jpg, como todos desabilitados.

A ideia ,é quando clica, desabilita, e quando terminar todo o processo, habilita novamente o checkbox

segue abaixo a rotina completa :

public class ManterItemOrcamentoMB implements PageMB, OperacaoConfirmavel,
		CallbackableMB {
		
		private boolean desabilitachek= false;
		
		
			@SuppressWarnings("unchecked")
			public void selecionarEspecificacao() {
				this.desabilitachek = false;
				
				
						if (carregaviewensaiometodo==1){
						
							//Evandro 06/12/12
				        	List<Vwanalisemetodo> listaanalisepormetodo =  analiseService
									.buscarAnalisesPadraoPorMatrizMetodo(matriz);
				        	
							
							analisearray = new ArrayList<Analise>();
							 for (Vwanalisemetodo viewaux:listaanalisepormetodo) {
								 
								   Analise analise = new Analise();
								   analise.setId(viewaux.getId());
								   
								   Ensaio ensaio = new Ensaio();
								   ensaio.setId(viewaux.getEnsaioId());
								   
								   analise.setEnsaio(ensaio);
								 
									Metodo metodo = new Metodo();
									
									Metodologia metodologia = new Metodologia();
									metodologia.setId(viewaux.getMetodosmetodologiaId());
														
									
									metodo.setId(viewaux.getMetodosid());		
									metodo.setMetodologia(metodologia);				
									metodo.setNome(viewaux.getMetodosnome());		
									metodo.setPreco(new Dinheiro(viewaux.getMetodosvalor()));
									
								 
								    analise.setMetodo(metodo);
								 
								    analisearray.add(analise);
									System.out.println("");
								 
							 }
				        	
				
							
							
							
							carregaviewensaiometodo=0;
						}
						
						
						ObjetoSelecionavel<Especificacao> especificacaoSelecionada = (ObjetoSelecionavel<Especificacao>) especificacoes
								.getRowData();
				
						if (!especificacaoSelecionada.isSelecionado()) {
							itemAtual.deselecionarEspecificacao(especificacaoSelecionada
									.getObjeto(), getMatriz());
				
							for (Iterator<AnaliseItem> it = analisesComEspecificacao.iterator(); it
									.hasNext();) {
								AnaliseItem item = it.next();
				
								if (item.getAnalisesEspecificadas().size() == 1
										&& item.getAnalisesEspecificadas().get(0)
												.getEspecificacao().equals(
														especificacaoSelecionada.getObjeto())) {
									item.deselecionar();
									it.remove();
								}
							}
				
							Collections.sort(todasAnalises, new AnaliseItemComparator());
				
							List<AnaliseItem> analisesFiltradas = filtro
									.aplicarA(todasAnalises);
				
							List<AnaliseItem> analisesExibidas = (List<AnaliseItem>) this.analisesExibidas
									.getWrappedData();
							analisesExibidas.clear();
							analisesExibidas.addAll(analisesFiltradas);
						} else {
							List<Pergunta> perguntasEspecificacao = orcamentoService
									.consultarPerguntasOrcamento(getMatriz(),
											especificacaoSelecionada.getObjeto());
							itemAtual.getQuestionario().adicionarPerguntas(
									perguntasEspecificacao);
				
							/*List<AnaliseItem> novosItemsDeEspecificacao = AnaliseItemHelper
									.adicionarAnaliseItemPorEspecificacao(
											especificacaoSelecionada.getObjeto(), itemAtual,
											analisesComEspecificacao, this.getMatriz());*/
							
							List<AnaliseItem> novosItemsDeEspecificacao = AnaliseItemHelper
							.adicionarAnaliseItemPorEspecificacao(
									especificacaoSelecionada.getObjeto(), itemAtual,
									analisesComEspecificacao, this.getMatriz(),analisearray);
							
							todasAnalises.removeAll(analisesComEspecificacao);
				
							analisesComEspecificacao.addAll(novosItemsDeEspecificacao);
							todasAnalises.addAll(0, analisesComEspecificacao);
							Collections.sort(todasAnalises, new AnaliseItemComparator());
				
							List<AnaliseItem> analisesFiltradas = filtro
									.aplicarA(todasAnalises);
				
							List<AnaliseItem> analisesExibidas = (List<AnaliseItem>) this.analisesExibidas
									.getWrappedData();
							analisesExibidas.clear();
							analisesExibidas.addAll(analisesFiltradas);
						}

				
				}		
		this.desabilitachek = true;			
		}