Converter Boolean em String

Galera esse e meu primeiro post, mas ja acompanho o GUJ a bastante tempo só estudando.
Desenvolvi uma aplicação que inseri dados, pesquisa os dados inseridos e altera os dados.
tenho um campo boolean chamado status e ao fazer alteração o campo mostra a opção de dizer se o status estar ativo ou cancelado. ate ai td bem…
Mas ao selecionar o status desejado e pesquisar os dados ele me retorna o campo status como “true” ou “false” e quero que retorne “Ativo ou Cancelado”.
Ja fiz diversas pesquisas aqui e na net mas não estou conseguindo prosseguir com a conversão para String.

aqui segue o código da minha pagina jsf.

<h:outputText value="Status* " /> <p:selectOneMenu value="#{sistemaMB.sistema.status}"> <f:selectItem itemValue="true" itemLabel="Ativo" /> <f:selectItem itemValue="false" itemLabel="Cancelado" /> </p:selectOneMenu>

Cara pq vc não usa Enum


public enum Status {
	ATIVO,  CANCELADO;
}

na entidade/classe onde vc tem o campo boolean vc alteraria esse campo para ser do tipo Status e na tabela correspondente do banco de dados vc usaria o tipo VARCHAR.

[quote=augustoneto]Cara pq vc não usa Enum


public enum Status {
	ATIVO,  CANCELADO;
}

na entidade/classe onde vc tem o campo boolean vc alteraria esse campo para ser do tipo Status e na tabela correspondente do banco de dados vc usaria o tipo VARCHAR.[/quote]

opa boa ideia… mas voce poderia detalhar mas em um exemplo para mim augustoneto.

@Entity
@Table(name="sistema")
public class Sistema {
	
	@Id
	@GeneratedValue
	private Long idSistema;
	private String descricao;
	private String sigla;
	private String email;
	private String url;
	private boolean status;
	private Date ultimaAlteracao;
	private String justificativa;
	private String novaJustificativa;
	private String usuario;
	
	public Long getIdSistema() {
		return idSistema;
	}
	public void setIdSistema(Long idSistema) {
		this.idSistema = idSistema;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public String getSigla() {
		return sigla;
	}
	public void setSigla(String sigla) {
		this.sigla = sigla;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public boolean isStatus() {
		return status;
	}
	public void setStatus(boolean status) {
		this.status = status;
	}
	public Date getUltimaAlteracao() {
		return ultimaAlteracao;
	}
	public void setUltimaAlteracao(Date ultimaAlteracao) {
		this.ultimaAlteracao = ultimaAlteracao;
	}
	public String getJustificativa() {
		return justificativa;
	}
	public void setJustificativa(String justificativa) {
		this.justificativa = justificativa;
	}
	public String getNovaJustificativa() {
		return novaJustificativa;
	}
	public void setNovaJustificativa(String novaJustificativa) {
		this.novaJustificativa = novaJustificativa;
	}
	public String getUsuario() {
		return usuario;
	}
	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}
	
}

Pode fazer via ternário:

Você também pode criar um conversor, Abaixo segue um exemplo:

@FacesConverter(value = "simNaoConverter")
public class YesNoConverter implements Converter {

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

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        Boolean condition = (Boolean) value;
        if (condition) {
            return "SIM";
        } else {
            return "NÃO";
        }
    }
}

E no xhtml:

O legal do converter é que dá para reaproveitar em outros momentos.

ayslanms vlw pela dica.
mas te perguntar, eu chamo o objeto boolean direto da entidade/classe para conversao ou chamo do metodo que lista ou que pesquisa dos dados e mostra na tela.

[quote=B.I.H]ayslanms vlw pela dica.
mas te perguntar, eu chamo o ojeto boolean direto da entidade/classe para conversao ou chamo do metodo que lista ou que pesquisa dos dados e mostra na tela.

[/quote]

A idéia do conversor é usar no xhtml. Como mostrei acima:

<h:outputText value="#{sistemaMB.sistema.status}" converter="simNaoConverter" /> 

O conversor só vai agir quando a tela for chamada.