P:selectBooleanButton - Converter não Funciona Com Character

3 respostas
samuk1

Bom Diaaa!

Tenho um Variavel na Minha entidade Que recebe um Character, 'S' ou 'N'. Representando um Sim ou não. Na minha View queria Usar o Componente do Prime "p:selectBooleanButton", que recebe boolean. Criei um Pequeno Converter, mas não está funcionando. Recebo o Seguinte Erro.
javax.el.ELException: /paginas/relatorios/clientes.xhtml @84,77 value="#{cliente.backup}": Cannot convert S of type class java.lang.Character to class java.lang.Boolean
A View:
<p:column headerText="Cliente Backup"
						style="width: 300px; text-align: center;">

						<p:selectBooleanButton styleClass="camposDesabilitados"
						value="#{cliente.backup}" onLabel="Sim" offLabel="Não" onIcon="ui-icon-check"
						offIcon="ui-icon-close" disabled="true" converter="booleanConverter"/>
						
					</p:column>
o Converter:
package br.com.autocom.converter;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

@FacesConverter("booleanConverter") 
public class BooleanConverter implements Converter {

	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String value) {

		if (value.equals("S")) {
			return true;
		}else{
			return false;
		}
		
	}
		

	@Override
	public String getAsString(FacesContext context, UIComponent component, Object value) {
		
		if ((Boolean) value) {
			return "S";
		}else{
			return "N";
		}
	}

}

Utilizando a Versão 3.5 do Primefaces!

Quem Puder me ajudar! ;)

3 Respostas

R

Provavelmente o campo do seu selectonemenu value="#{cliente.backup}" está sendo mapeado para Character, e o método do seu converter (getAsObject) está retornando um Boolean.

No seu caso creio que seja desnecessário o Converter, já que o seu selectonemenu não é uma Entidade. Tente usar desta forma.

<p:selectOneMenu style="width:300px;" value="#{cliente.backup}>
      <f:selectItem itemValue="S" itemLabel="Sim"/>
      <f:selectItem itemValue="N" itemLabel="Não"/>
</p:selectOneMenu>
ErickRAR

rockcentauro:
Provavelmente o campo do seu selectonemenu value="#{cliente.backup}" está sendo mapeado para Character, e o método do seu converter (getAsObject) está retornando um Boolean.

No seu caso creio que seja desnecessário o Converter, já que o seu selectonemenu não é uma Entidade. Tente usar desta forma.

<p:selectOneMenu style="width:300px;" value="#{cliente.backup}> <f:selectItem itemValue="S" itemLabel="Sim"/> <f:selectItem itemValue="N" itemLabel="Não"/> </p:selectOneMenu>

Acho que o correto seria:

<f:selectItem itemValue="#{true}" itemLabel="S"/> <f:selectItem itemValue="#{false}" itemLabel="N"/>

samuk1

Obrigado Pelas Repostas!

E o certo é esse mesmo:<p:selectOneMenu style="width:300px;" value="#{cliente.backup}> <f:selectItem itemValue="S" itemLabel="Sim"/> <f:selectItem itemValue="N" itemLabel="Não"/> </p:selectOneMenu>

Mas essa Não era minha Duvida!

O selectOneMenu eu já utilizava.

Queria testar e descobrir o porque de não funcionar com o selectBooleanButton.
Afinal se tem a função de converter, tem de aceitar!

Criado 24 de janeiro de 2014
Ultima resposta 24 de jan. de 2014
Respostas 3
Participantes 3