Ao selecionar um combo Limpar e disabilitar o outo

Pessoal,

Estou tentando fazer um evento change, ajax, relacionando estado e cidade. Bom esta funcionando ate o momento que clico em “Selecione…” no estado e nao 'e execultado o metodo e o combo cidade fica preenchido com os valores que ja estavao e conseguentemente nao fica desabilitado. Entenderam?
Pesso uma ajuda de voces e agradeco desde ja pela colaboracao de todos.

Meu xhtml:

<h:outputLabel for="estado" value="Estado: *" />

<h:selectOneMenu id="estado" value="#{pessoaBean.estado.codigo}"
	required="true" requiredMessage="Favor informar o Estado.">
	<f:selectItem itemValue="#{pessoaBean.estado.codigo}" itemLabel="Selecione..." />
	<f:selectItems value="#{pessoaBean.comboEstado}"/>
	<f:ajax event="change" listener="#{pessoaBean.listarCidades}" render="cidade"/>
</h:selectOneMenu>

<p:message for="estado" />

<h:outputLabel for="cidade" value="Cidade: *" />

<h:selectOneMenu id="cidade" value="#{pessoaBean.cidade.codigo}"
	required="true" requiredMessage="Favor informar a Cidade." disabled="#{!empty pessoaBean.cidade.codigo}">
	<f:selectItem itemValue="" itemLabel="Selecione..." />
	<f:selectItems value="#{pessoaBean.comboCidade}"/>
</h:selectOneMenu>

<p:message for="cidade" />

Meu Bean:

@ManagedBean(name = "pessoaBean")
@SessionScoped
public class PessoaBean {
	Pessoa pessoa;
	Estado estado;
	Idioma idioma;
	Cidade cidade;

	public PessoaBean() {
		pessoa = new Pessoa();
		cidade = new Cidade();
		estado = new Estado();
		cidade.setEstado(new Estado());

		pessoas = new ArrayList<Pessoa>();

		EstadoBO estadoBO = new EstadoBO();
		this.comboEstado = new ArrayList<SelectItem>();
		for(Estado item : estadoBO.listar()) {				
			this.comboEstado.add(new SelectItem(item.getCodigo(),item.getNome()));		
		}

		IdiomaBO idiomaBO = new IdiomaBO();
		this.checkboxIdioma = new ArrayList<SelectItem>();
		for(Idioma item : idiomaBO.listar()){
			this.checkboxIdioma.add(new SelectItem(item.getCodigo(),item.getNome()));
		}

		
	}

	public String listarCidades() {
		CidadeBO cidadeBO = new CidadeBO();
		this.comboCidade = new ArrayList<SelectItem>();
		this.cidade.setEstado(this.estado);
		for(Cidade item : cidadeBO.listar(cidade)){
			this.comboCidade.add(new SelectItem(item.getCodigo(),item.getNome()));
		}
		return null;
	}

O problema é que quando seleciono no combo estado o item “Selecione…” nao chama o metodo listarCidades(), passando algum valor, como resolveria isso??

Era somente colocar <f:selectItem itemValue=“0” itemLabel=“Selecione…” />, pois o valor que vai pra o Bean é um codigo.