Algoritmo para Validação diferente de campos no JSF

Oi pessoal , tudo bom

Tenho uma aplicação em JSF e em um dos meus formulários tenho 3 selectOneMenu, porém preciso fazer uma validação diferente neles, preciso q apenas 1 dos 3 campos seja preenchido, ou seja, se a pessoa tentar preencher 2 ou os 3 ou até 0 campos(se ele esquecer de preencher), o sistema não pode deixar ele cadastrar o formulario, pensei em fazer isso no meu managedBean com um algoritmo do tipo

if(primeiroCampo != vazio && segundoCampo == vazio && terceiroCampo == vazio)
salvaFormulario();
else if(primeiroCampo == vazio && segundoCampo != vazio && terceiroCampo == vazio)
salvaFormulario();
else if(primeiroCampo == vazio && segundoCampo == vazio && terceiroCampo != vazio)
salvaFormulario();
else
exibe mensagem de erro;

porém acho q meu algoritmo é muito ruim e que dava pra melhorar, alguém tem alguma sugestão de como posso melhorá-lo?

Flw gente

Um idéia seria colocar esses valores num vararg/list e iterá-lo de forma que caso algum dos valores iterados seja não nulo vc incrementa um contador.
Daí vc retorna true somente caso contador seja igual a 1.
Tipo:

public boolean somenteUmValido(String ... lista) {
	int countOn=0;
	for (String str : lista) {
		if (str!=null && !str.trim().equals("")) {
			countOn++;
		}
	}
	return countOn == 1 ;
}