[JSF] - Problema Pra Converter Boolean em String

Bom tenho 1 campo aqui no meu formulario que eh um CheckBox, blz ele grava certinho e qdo traz tb ta tudo blz…
Porem eu precisava gravar Sim e Não ao inves de True e False.

Li 1 pouco e vi que teria q criar um converter mas eu n consegui assimilar mto bem isso, será q alguem pode me ajudar…

Mto Obrigado :smiley:

não dá pra vc colocar “Sim” no value desse checkbox??

HUm… Nao Sei…

Mas eh 1 SelectBooleanCheckBox…

Mas eh q a propriedade eh Boolean…
Mas em Tela eu keria mostrar Sim e Não… Entende?

Olá tudo bem?

Tem três maneiras de você resolver isso:

1º Maniera:


boolean check;
String checkString;

public void setCheck(boolean check) {
   checkString = check ? "Sim" : "Não";
   this.check = check;
}

2º Maneira
Ao salvar fazer a mesma verificação acima

   String checkString = check ? "Sim" : "Não";

3º Maneira
O conversor que você disse, porém eu não sei muito bem fazer conversor!

Abraços, espero que te ajude!

Então era bem q vc num sabe q eu preciso kkkkk…

Por que eh bom pq um conversor desse vc smp usa neh…

Mas valeo a ideia thanks :]

Mas Preciso desse Conversor :confused:

Oi,

Acredito que neste caso não seja necessário um conversor.
O label você deixa como Sim/Não e o value como true ou false.

<h:selectOneRadio value="#{managedBean.valor}">
	<f:selectItem itemValue="true" itemLabel="Sim"  />
	<f:selectItem itemValue="false" itemLabel="Não" />
</h:selectOneRadio>

Fazendo desta maneira, irá aparecer na tela o Sim e o Não, mas o valor que será setado no seu
managed bean será true quando o “Sim” for escolhido e false quando o “Não” for escolhido

Qualquer coisa posta aí!
Abraço

Creio que seja algo mais ou menos assim:

public class BooleanToStringConverter implements Converter {
	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		if(value == null) return Boolean.FALSE;
		return "Sim".equalsIgnoreCase(value) || "True".equalsIgnoreCase(value);
	}

	public String getAsString(FacesContext context, UIComponent component, Object object) {
		if(value == null) return "Não";
		if(object instanceof Boolean) return ((Boolean)object).booleanValue() ? "Sim" : "Não";
		return object.toString();
	}

}

Depois é só declara-lo no faces-config e usa-lo nas suas paginas!

Estranho eu colokei um System.out nos metodos por que nao estão passando…
Por que num teve nenhuma mudança…

eh assim mesmo q mapeia o conversor???

 <converter>
 	<converter-id>MyConverter</converter-id>
 	<converter-class>Converter.MyConverter</converter-class>
 </converter>

SO pra Constar Minha Classe chama msm MyConverter… q eu ja tinha um mapeado ai soh substitui os metodos…

Uma Coisa eh q eu estou utilizando akele SelectBooleanCheckBox, e nele parece q n ta funcionando em 1 input por exemplo pelo menos aparece q funcionou, por q?

Realmente, conversores não funcionam com selectBooleanCheckbox:
http://www.i-coding.de/www/en/jsf/bug/selectbooleancheckbox-converter.html

Use a solução do link, ou uma das fornecidas anteriormente!