JSF 1.2 + jboss-5.0.0.Beta4 (Tomcat 6.0.16) - Problemas virão !!!  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
fre_d
Java Ninja

Membro desde: 13/06/2007 17:42:02
Mensagens: 259
Localização: Lages - SC
Offline

Pessoal,

Estou utilizando jboss-5.0.0.Beta4 (Tomcat 6.0.16) e me deparei com o seguinte "problema":

Os campos input que fazem referência para valores do tipo java.lang.Integer no meu bean.


Quando submetidos em branco o valor é convertido para zero. (O converter default para java.lang.Integer é o IntegerConverter do faces)

Procurei na internet e encontrei a explicação na especificação do javax.el.

1.18.3 Coerce A to Number type N
- If A is null or "", return 0.


Implementação da classe do Tomcat que faz a conversão.
http://www.javaresearch.org/source/jakarta/commons/el1.0/org/apache/commons/el/Coercions.java.html

E agora ? O que fazer quando o usuário não digirar nada e o Tomcat converter para ZERO ? Quando o usuário digitar ZERO quando vou saber se foi o javax.el que converteu ou o usuário que digitou ?


[]'s

Fred




This message was edited 2 times. Last update was at 30/03/2008 17:49:02

Leonardo3001
GUJ Ranger

Membro desde: 04/07/2007 18:28:58
Mensagens: 975
Offline

fre_d wrote:E agora ? O que fazer quando o usuário não digirar nada e o Tomcat converter para ZERO ? Quando o usuário digitar ZERO quando vou saber se foi o javax.el que converteu ou o usuário que digitou ?


Ué? Não entendi o fato de você citar o JBoss AS e o Tomcat na história (talvez você queria afugentar os especialistas em Weblogic ou Glassfish, sei lá), essa característica faz parte do Faces padrão.

Existem várias possibilidades para resolver seu "problema":

Se branco é um valor inválido e zero, válido; basta colocar no seu componente o atributo:


Se tanto branco quanto zero forem inválidos; basta, como filho de h:inputText, colocar a validação:


Se branco e zero forem válidos; use Integer (classe) ao invés de int (tipo primitivo) que, ao enviar branco, a sua variável estará como null.

É isso.

Leonardo Veríssimo
-------------------------------------------------
Objectzilla
[WWW]
fre_d
Java Ninja

Membro desde: 13/06/2007 17:42:02
Mensagens: 259
Localização: Lages - SC
Offline

A espeficiação é do javax.el !!! Citei o Tomcat e o JBoss 5 beta 4 porque ambos ja estão implementando de acordo com a especificação.

No meu post está java.lang.Integer.

A característica não faz parte do faces padrão, o IntegerConverter retorna null se o valor for "" (branco).

O problema é que IntegerConverter retorna null e a implementação do javax.el seta ZERO. Entendeu ?

Anexei a aplicação, você pode testar usando tomcat 6.0.16 ou jboss 5 beta 4.
 Nome do arquivo FacesInteger.rar [Disk] Download
 Descrição Aplicação para teste
 Tamanho 5 Kbytes
 Baixado:  101 vez(es)

This message was edited 3 times. Last update was at 31/03/2008 12:04:51

DanielPaiva
JavaTeenager

Membro desde: 26/05/2004 18:35:58
Mensagens: 192
Offline

Alguem sabe se já corrigiram isto ?
[WWW]
leandrogmuller
Debugger
[Avatar]

Membro desde: 19/11/2008 12:30:27
Mensagens: 55
Localização: Paranavaí
Offline

Estou com o mesmo problema, já saiu a versão 5.1 e mesmo erro. Alguém conseguiu resolver?
[MSN]
DanielPaiva
JavaTeenager

Membro desde: 26/05/2004 18:35:58
Mensagens: 192
Offline

Inclua esta linha no fim do seu "catalina.properties" a seguinte instrucao:
org.apache.el.parser.COERCE_TO_ZERO=false
[WWW]
leandrogmuller
Debugger
[Avatar]

Membro desde: 19/11/2008 12:30:27
Mensagens: 55
Localização: Paranavaí
Offline

catalina.properties é do tomcat 6.
Não encontrei esse arquivo no jboss 5
[MSN]
DanielPaiva
JavaTeenager

Membro desde: 26/05/2004 18:35:58
Mensagens: 192
Offline

na verdade este aquivo está dentro da pasta conf do tomcat.
[WWW]
leandrogmuller
Debugger
[Avatar]

Membro desde: 19/11/2008 12:30:27
Mensagens: 55
Localização: Paranavaí
Offline

Esse problema ainda continua, tentei colocar no run.conf mas também não funciona.
Esse catalina.properties não existe mais no jboss 5.1
[MSN]
leandrogmuller
Debugger
[Avatar]

Membro desde: 19/11/2008 12:30:27
Mensagens: 55
Localização: Paranavaí
Offline

Problema resolvido, tem que inicializar com -Dorg.apache.el.parser.COERCE_TO_ZERO=false

dessa forma
run.bat -Dorg.apache.el.parser.COERCE_TO_ZERO=false

mesmo colocando dentro run.conf nao funciona, so na linha de comando
[MSN]
fre_d
Java Ninja

Membro desde: 13/06/2007 17:42:02
Mensagens: 259
Localização: Lages - SC
Offline

Ainda estou com um problema similar. Os campos "" (Vazio) não são convertidos para NULL, alguém encontrou uma solução ?.

Valeu,

Fred

Implementação do EL

This message was edited 1 time. Last update was at 09/07/2009 16:48:19

gleyve
What is classpath?

Membro desde: 11/09/2008 10:56:30
Mensagens: 7
Offline

Ninguém na face da terra tem solução p/ isso????????
Afinal é um bug do tomcat ou o quê??????
Já pesquisei em todos locais possíveis...quem souber solução estou precisnado tb..

Tentei isso mas nada...ainda ves aspas e não null


Valeu!!

This message was edited 2 times. Last update was at 21/08/2009 17:08:10

[MSN]
apalmeira
Java Ninja

Membro desde: 01/11/2006 00:48:21
Mensagens: 250
Offline

Olá pessoal,

Alguém sabe se já existe correção para isso? Utilizo o Jboss 5.0.

Vlw
IAX
Thread.start()
[Avatar]

Membro desde: 11/05/2007 03:15:13
Mensagens: 46
Localização: Uberlândia - MG
Offline

Bom Dia pessoal,

Como o tópico ainda não está fechado resolvi ajudar, se alguém precisar uma solução nesse http://www.guj.com.br/java/228436-jsf-seta-zero-para-valores-null-do-inputtext-resolvido existe uma bem legal.


flws
apalmeira
Java Ninja

Membro desde: 01/11/2006 00:48:21
Mensagens: 250
Offline

A solução está logo acima!

org.apache.el.parser.COERCE_TO_ZERO=false

Utilizo JBoss e funcionou.

Abraços
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team