[Resolvido] Valor default para campo bindado - JSF

Meu Bean tem um valor int que é exbido na tela

 value="#{whateverBean.bean.atributoInt}"

Inicializo esse bean ao declará-lo

private Bean b = new Bean();

Naturalmente, esse valor é exibido na tela como 0.

Agora meu problema, preciso que esse valor default exibido no campo seja nulo, MAS o tipo do atributo no bean deve continuar como int.

E agora José?

usa Integer ao invés de de int.

Você ao menos LEU o meu texto?

qual o problema de ser Integer ou int…?
int não existe null, e não tiver valor sempre vai ser 0.

uma solução seria cria as propriedades no bean do tipo Integer e usar na pagina… assim

[code]public void setAtributoInt(Integer value){
if(value != null){
bean.setAtributoInt(value);
}
}

public Integer getAtributoInt(){
if(bean.getAtributoInt() == 0){
return null;
}
return bean.getAtributoInt();
}[/code]

Isso ajuda?

[quote=alves.Felipe]qual o problema de ser Integer ou int…?
int não existe null, e não tiver valor sempre vai ser 0.[/quote]
Eu sei disso.
O problema é que esse bean é usado em outras aplicações dentro da empresa. Não é simplesmente mudar o tipo do campo para Integer.
Mas enquanto esperava, encontrei a solução:

value="#{whateverBean.bean.atributoInt == 0 ? null : whateverBean.bean.atributoInt}"

EDIT:

[quote=ricardobocchi]uma solução seria cria as propriedades no bean do tipo Integer e usar na pagina… assim

[code]public void setAtributoInt(Integer value){
if(value != null){
bean.setAtributoInt(value);
}
}

public Integer getAtributoInt(){
if(bean.getAtributoInt() == 0){
return null;
}
return bean.getAtributoInt();
}[/code]

Isso ajuda?[/quote]
Isso também é uma solução, mas achei a minha mais simples.

é que não é recomendado colocar regras assim dentro das paginas JSF… acoplamento desnecessario… eu costumo colocar as regras no bean… mas de qualquer forma funciona.

abrass

então explique certo a merda do seu problema na próxima vez.

e isso não é boa pratica fazer. colocar a lógica dentro da página.!!

[quote=ricardobocchi]é que não é recomendado colocar regras assim dentro das paginas JSF… acoplamento desnecessario… eu costumo colocar as regras no bean… mas de qualquer forma funciona.

abrass[/quote]
Sim, não é recomendado. Mas a meu ver, ela é inofensiva. Não acha?

[quote=alves.Felipe][quote=bruno_7317]
O problema é que esse bean é usado em outras aplicações dentro da empresa. Não é simplesmente mudar o tipo do campo para Integer.
Mas enquanto esperava, encontrei a solução:

value="#{whateverBean.bean.atributoInt == 0 ? null : whateverBean.bean.atributoInt}"

[/quote]
então explique certo a merda do seu problema na próxima vez.

e isso não é boa pratica fazer. colocar a lógica dentro da página.!!
[/quote]
Não vejo o motivo do xingamento.

talvez seja, talvez não… depende do tamanho do projeto, chances de alteração e outras variaveis… mas na dúvida, é melhor seguir o recomendado, mesmo que dê um pouco mais de trabalho… são os detalhes que fazem um código bem feito. Ainda mais nas paginas JSF que não são compiladas… ai o erro só é visto quando alguém acessa… mas tudo tem os dois lados…

abrass

da uma olhada ai http://www.rponte.com.br/2009/08/27/managed-beans-nao-complique-simplifique/

[quote=ricardobocchi]talvez seja, talvez não… depende do tamanho do projeto, chances de alteração e outras variaveis… mas na dúvida, é melhor seguir o recomendado, mesmo que dê um pouco mais de trabalho… são os detalhes que fazem um código bem feito. Ainda mais nas paginas JSF que não são compiladas… ai o erro só é visto quando alguém acessa… mas tudo tem os dois lados…

abrass[/quote]
Depois de ler o link do alves.Felipe, compreendi o seu pensamento. Realmente ter esse tipo de lógica na página não tem lógica. LOL

[quote=alves.Felipe]da uma olhada ai http://www.rponte.com.br/2009/08/27/managed-beans-nao-complique-simplifique/
[/quote]
Ótimo link.

[quote=bruno_7317]Meu Bean tem um valor int que é exbido na tela

 value="#{whateverBean.bean.atributoInt}"

Inicializo esse bean ao declará-lo

private Bean b = new Bean();

Naturalmente, esse valor é exibido na tela como 0.

Agora meu problema, preciso que esse valor default exibido no campo seja nulo, MAS o tipo do atributo no bean deve continuar como int.

E agora José?[/quote]

Olá bruno_7317,

Está utilizando Tomcat como container?