vRaptor + interceptor para enum

Saudações galera, espero que alguem consiga me ajudar. Ainda engatinhando no vRaptor, acredito que preciso de um interceptor para verificar um valor inválido para um enum, e nesse caso atribuir um “valor null” para ele no objeto instanciado.

Explicando melhor. Eu envio os valores do enum através do result e faço uma interação no JSP para montar um . Ocorre que preciso ter uma opção para a busca em todas as categorias. O problema é quando o valor Todas é selecionado, pois isso gera um NullPointerException, já que não é possível converter este valor para um valor válido no enum.

Nas telas de inclusão e alteração dos documentos não há problemas, tudo funciona perfeitamente, sinal de que o enum está sendo corretamente preenchido.

no controller eu envio assim:

	@Get @Path("/pesquisar")
	public void formulario(){
		result.include("categorias",Categoria.values());
	}

O enum é este:

package br.jus.tjac.legis.model;

public enum Categoria {
	ATA("Ata"), 
	BOLETIM_CORREGEDORIA("Boletim da Corregedoria"), 
	BOLETIM_TJAC("Boletim do Tribunal de Justiça"),
	NOTA_TECNICA("Notas técnicas"),
	PORTARIA_PRESIDENCIA("Portarias da Presidência"),
	PORTARIA_COMISSAO("Portarias da Comissão"),
	RESOLUCAO("Resoluções");
	
	private String descricao;

	Categoria(String descricao){
		this.descricao=descricao;
	}
	
	public String getDescricao(){
		return this.descricao;
	}
	
}

Este é o form com a opção ALL, antes de iterar sobre a coleção de valores:

<form id="formConsulta" method="POST" action="<c:url value="/pesquisar"/>">

	<label for="conteudo">Selecione a palavra-chave referente ao Ato</label>
	<input name="publicacao.conteudo" id="conteudo" type="text" value="Palavras-chave" />
	<label for="categoria">Selecione a categoria do Ato</label>
	
	<select name="publicacao.categoria">
		<option value="ALL">Todas</option>
		<c:forEach var="categoria" items="${categorias}" varStatus="status">
			<option value="${status.index}">${categoria.descricao}</option>
		</c:forEach>
	</select>
	<button type="submit" id="consultar">Consultar</button>
</form>

recebo os dados:

        @Post @Path("/pesquisar")
	public List<Publicacao> busca(Publicacao publicacao){
		List<Publicacao> resultado=dao.getExemplo(publicacao);
		result.include("total",resultado.size());
		return resultado;		
	}

no dao a pesquisa:

	public List<Publicacao> getExemplo(Publicacao publicacao){
		
		Example exemplo = Example.create(publicacao)
		.enableLike(MatchMode.ANYWHERE)
		.ignoreCase();
		
		List<Publicacao> resultado =(List)session.createCriteria(Publicacao.class).add(exemplo).list();
		
		return resultado;
	}

Gostaria de saber como faço para que quando o usuário escolher a opção todas, este enum seja setado com valor “em branco”.

Abraço a todos.

Se ALL não é uma opção no enum, ele não deve estar no checkbox. Simplesmente não coloque nada no atributo value do chechbox na opção todos e trate em sua aplicação como NULL.

Eu já havia pensado nessa solução, mas com a sua confirmação eu acho que vai ser assim mesmo que vou implementar. Seria legal se ficasse como uma opção lá no menu, mas como diz o ditado “quem não tem cão, caça com gato”.

Valeu garcia-jj, obrigado pela atenção.

No que é apresentado vc pode deixar o texto “Todas” e no value em branco.

PS: Tem cara de sistema de emissão de diario !!!

[quote=pbnf]No que é apresentado vc pode deixar o texto “Todas” e no value em branco.

PS: Tem cara de sistema de emissão de diario !!![/quote]

Puxa vida pbnf. Funcionou, é isso mesmo, vivendo e aprendendo. Muito obrigado a você e ao colega garcia-jj pela atenção.

pbnf, não é para o Diário. Na verdade estou construindo um sistema de busca para a legislação local. Temos aqui tudo em PDF, o sistema realiza a conversão desses pdf em texto plano, onde é realizada a busca.

Bom fim de semana a todos.