[Resolvido] Valor default para campo bindado - JSF

12 respostas
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é?

12 Respostas

alves.Felipe

usa Integer ao invés de de int.

bruno_7317

Você ao menos LEU o meu texto?

alves.Felipe

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

ricardobocchi

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

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

public Integer getAtributoInt(){
  if(bean.getAtributoInt() == 0){
      return null;
  }
  return bean.getAtributoInt();
}

Isso ajuda?

bruno_7317
alves.Felipe:
qual o problema de ser Integer ou int..? int não existe null, e não tiver valor sempre vai ser 0.
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:

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

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

public Integer getAtributoInt(){
  if(bean.getAtributoInt() == 0){
      return null;
  }
  return bean.getAtributoInt();
}

Isso ajuda?


Isso também é uma solução, mas achei a minha mais simples.

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

alves.Felipe

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.!!

bruno_7317

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


Sim, não é recomendado. Mas a meu ver, ela é inofensiva. Não acha?

alves.Felipe:
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}"


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.!!


Não vejo o motivo do xingamento.

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

alves.Felipe

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

bruno_7317

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


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

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

Ótimo link.

rponte

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é?

Olá bruno_7317,

Está utilizando Tomcat como container?

Criado 26 de março de 2012
Ultima resposta 27 de mar. de 2012
Respostas 12
Participantes 4