Olá pessoal gostaria de saber com tratar erro de tipo de obejeto da view.
Tratar datas(27/09/2010),valor decimal(1.000,00).
Li o material dos conversores mas não entendi como aplicar.
vlw
Olá pessoal gostaria de saber com tratar erro de tipo de obejeto da view.
Tratar datas(27/09/2010),valor decimal(1.000,00).
Li o material dos conversores mas não entendi como aplicar.
vlw
Você não trata nada, quem faz isso é o Vraptor.
Basta você adicionar no seu web.xml:
[code]
br.com.caelum.vraptor.packages
br.com.caelum.vraptor.converter.l10n
E no seu código basta você receber os valores com o tipo correto:
public void foo(Date nascimento) {
[...]
}
Opa!
Para converter os números vc pode adicionar ao seu web.xml esta configuração:
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.caelum.vraptor.converter.l10n</param-value>
</context-param>
Na JSP vc pode colocar uma máscara JQuery para que os valores sejam digitados 27/10/2010 e 25.000,00, lembrando que vc deve usar jstl na JSP:
// formatando Moeda
<input id="real" name="produto.valor" type="text" value="<fmt:formatNumber value="${produto.valor}" minFractionDigits="2"/>" />
// formatando Data
<input id="data" name="produto.dataInclusao" type="text" value="<fmt:formatDate pattern='dd/MM/yyyy' value="${produto.dataInclusao }"/>"/></input>
Abraço!
[quote=Guevara]Opa!
Para converter os números vc pode adicionar ao seu web.xml esta configuração:
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.caelum.vraptor.converter.l10n</param-value>
</context-param>
Na JSP vc pode colocar uma máscara JQuery para que os valores sejam digitados 27/10/2010 e 25.000,00, lembrando que vc deve usar jstl na JSP:
// formatando Moeda
<input id="real" name="produto.valor" type="text" value="<fmt:formatNumber value="${produto.valor}" minFractionDigits="2"/>" />
// formatando Data
<input id="data" name="produto.dataInclusao" type="text" value="<fmt:formatDate pattern='dd/MM/yyyy' value="${produto.dataInclusao }"/>"/></input>
Abraço!
[/quote]
Ok
com fmt tratamos o retorno certo?
Como tratar o valor com virgula enviado?
ex. 10,00 o vraptor converte para 10.00?
se vc estiver com o locale pt_BR, sim
Coloquei no web.xml mas não está convertendo.
vc chegou a adicionar isso no web.xml?
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.caelum.vraptor.converter.l10n</param-value>
</context-param>
[quote=Lucas Cavalcanti]vc chegou a adicionar isso no web.xml?
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.caelum.vraptor.converter.l10n</param-value>
</context-param>
[/quote]
Adicionei.
Quando eu envio no log não aparece nada sobre converter.
Não precisa anotar nada na classe?
cuidado que o final é L dez N, e não cento e dez N
habilita o log de debug do vraptor, e veja se ao iniciar a aplicação aparece algum converter do pacote br.com.caelum.vraptor.converter.l10n…
de qqer forma, qual é o tipo que o produto.setValor() recebe?
[quote=Lucas Cavalcanti]cuidado que o final é L dez N, e não cento e dez N
habilita o log de debug do vraptor, e veja se ao iniciar a aplicação aparece algum converter do pacote br.com.caelum.vraptor.converter.l10n…
de qqer forma, qual é o tipo que o produto.setValor() recebe?[/quote]
No log está scanneando
13:50:51,897 DEBUG [ComponentScanner ] scanning [br.com.caelum.vraptor.converter.l10n]
13:50:51,908 INFO [DefaultListableBeanFactory] Overriding bean definition for bean 'org.springframework.context.annotation.internalAutowiredAnnotationProcessor': replacing [Root bean: class [org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] with [Root bean: class [br.com.caelum.vraptor.ioc.spring.InjectionBeanPostProcessor]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null]
13:50:51,915 DEBUG [VRaptorApplicationContext] Bean factory for Root WebApplicationContext: org.springframework.beans.factory.support.DefaultListableBeanFactory@1ba614a: defining beans [XStreamXMLDeserializer,asmBasedTypeCreator,defaultConverters,objenesisProxifier,defaultMultipartConfig,encodingHandlerFactory,defaultAcceptHeaderToFormat,defaultRouter,defaultTypeNameExtractor,defaultDeserializers,defaultRoutes,defaultTypeFinder,defaultMethodNotAllowedHandler,defaultResourceTranslator,defaultResourceNotFoundHandler,pathAnnotationRoutesParser,defaultInterceptorRegistry,emptyElementsRemoval,noRoutesConfiguration,paranamerNameProvider,stereotypeHandler,converterHandler,interceptorStereotypeHandler,deserializesHandler,stereotypedBeansRegistrar,defaultSpringLocator,applicationConfiguration,downloadInterceptor,defaultResult,defaultRepresentationResult,defaultRefererResult,multipartInterceptor,XStreamJSONSerialization,jstlLocalization,deserializingInterceptor,XStreamXMLSerialization,forwardToDefaultViewInterceptor,flashInterceptor,defaultValidator,parametersInstantiatorInterceptor,defaultStatus,defaultValidationViewsFactory,executeMethodInterceptor,emptyResult,defaultPageResult,ognlParametersProvider,defaultPathResolver,replicatorOutjector,defaultLogicResult,instantiateInterceptor,defaultFormatResolver,defaultHttpResult,defaultMethodInfo,interceptorListPriorToExecutionExtractor,resourceLookupInterceptor,outjectResult,bigDecimalConverter,bigIntegerConverter,booleanConverter,byteConverter,characterConverter,doubleConverter,enumConverter,floatConverter,integerConverter,localeBasedCalendarConverter,localeBasedDateConverter,longConverter,primitiveBooleanConverter,primitiveByteConverter,primitiveCharConverter,primitiveDoubleConverter,primitiveFloatConverter,primitiveIntConverter,primitiveLongConverter,primitiveShortConverter,shortConverter,uploadedFileConverter,VRaptorRequestProvider,httpServletRequestProvider,httpServletResponseProvider,httpSessionProvider,localDateConverter,localTimeConverter,defaultInterceptorStack,defaultRequestExecution,categoriasController,cepController,familiasController,fornecedoresController,multiEansController,nfEntradaController,nutricaoController,parametrosController,produtosController,receitasController,usuariosController,categoriaDao,cstADao,divisaoDao,embCompraDao,embRecebimentoDao,embVendaDao,familiaDao,figuraFiscalDao,grupoDao,impostoDao,logbairroDao,log_faixa_ufDao,log_logradouroDao,lojaDao,marcaDao,multiEanDao,nutricaoDao,pisCofinsDao,produtoDao,produtoEanDao,produtoLojaDao,produtoPesadoDao,produtoRapidoDao,receitaDao,secaoDao,setorCustoDao,setorDao,subGrupoDao,tipoEmbalagemDao,tipoProdutoDao,usuarioDao,criadorDeSession,criadorDeSessionFactory,autorizacaoInterceptor,usuarioWeb,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.aop.config.internalAutoProxyCreator,cacheBasedTypeCreator]; root of factory hierarchy
13:50:52,289 DEBUG [VRaptorApplicationContext] Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@1a6b028]
13:50:52,292 DEBUG [VRaptorApplicationContext] Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@772046]
13:50:52,303 INFO [DefaultListableBeanFactory] Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1ba614a: defining beans [XStreamXMLDeserializer,asmBasedTypeCreator,defaultConverters,objenesisProxifier,defaultMultipartConfig,encodingHandlerFactory,defaultAcceptHeaderToFormat,defaultRouter,defaultTypeNameExtractor,defaultDeserializers,defaultRoutes,defaultTypeFinder,defaultMethodNotAllowedHandler,defaultResourceTranslator,defaultResourceNotFoundHandler,pathAnnotationRoutesParser,defaultInterceptorRegistry,emptyElementsRemoval,noRoutesConfiguration,paranamerNameProvider,stereotypeHandler,converterHandler,interceptorStereotypeHandler,deserializesHandler,stereotypedBeansRegistrar,defaultSpringLocator,applicationConfiguration,downloadInterceptor,defaultResult,defaultRepresentationResult,defaultRefererResult,multipartInterceptor,XStreamJSONSerialization,jstlLocalization,deserializingInterceptor,XStreamXMLSerialization,forwardToDefaultViewInterceptor,flashInterceptor,defaultValidator,parametersInstantiatorInterceptor,defaultStatus,defaultValidationViewsFactory,executeMethodInterceptor,emptyResult,defaultPageResult,ognlParametersProvider,defaultPathResolver,replicatorOutjector,defaultLogicResult,instantiateInterceptor,defaultFormatResolver,defaultHttpResult,defaultMethodInfo,interceptorListPriorToExecutionExtractor,resourceLookupInterceptor,outjectResult,bigDecimalConverter,bigIntegerConverter,booleanConverter,byteConverter,characterConverter,doubleConverter,enumConverter,floatConverter,integerConverter,localeBasedCalendarConverter,localeBasedDateConverter,longConverter,primitiveBooleanConverter,primitiveByteConverter,primitiveCharConverter,primitiveDoubleConverter,primitiveFloatConverter,primitiveIntConverter,primitiveLongConverter,primitiveShortConverter,shortConverter,uploadedFileConverter,VRaptorRequestProvider,httpServletRequestProvider,httpServletResponseProvider,httpSessionProvider,localDateConverter,localTimeConverter,defaultInterceptorStack,defaultRequestExecution,categoriasController,cepController,familiasController,fornecedoresController,multiEansController,nfEntradaController,nutricaoController,parametrosController,produtosController,receitasController,usuariosController,categoriaDao,cstADao,divisaoDao,embCompraDao,embRecebimentoDao,embVendaDao,familiaDao,figuraFiscalDao,grupoDao,impostoDao,logbairroDao,log_faixa_ufDao,log_logradouroDao,lojaDao,marcaDao,multiEanDao,nutricaoDao,pisCofinsDao,produtoDao,produtoEanDao,produtoLojaDao,produtoPesadoDao,produtoRapidoDao,receitaDao,secaoDao,setorCustoDao,setorDao,subGrupoDao,tipoEmbalagemDao,tipoProdutoDao,usuarioDao,criadorDeSession,criadorDeSessionFactory,autorizacaoInterceptor,usuarioWeb,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.aop.config.internalAutoProxyCreator,cacheBasedTypeCreator]; root of factory hierarchy
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
13:50:55,010 DEBUG [VRaptorApplicationContext] Unable to locate LifecycleProcessor with name 'lifecycleProcessor': using default [org.springframework.context.support.DefaultLifecycleProcessor@d0cdd0]
13:50:55,085 INFO [DefaultConverters ] Registering bundled converters
13:50:55,085 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.BigDecimalConverter
13:50:55,085 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.BigIntegerConverter
13:50:55,085 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.BooleanConverter
13:50:55,085 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.ByteConverter
13:50:55,085 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.CharacterConverter
13:50:55,085 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.DoubleConverter
Quando adiciono passa os valores como estão na view(ex.1,1)
qual é o tipo que o produto.setValor() recebe?
Double
e que valor é colocado no produto.getValor()?
1,1
então não entendi qual é o problema… o valor não está correto?
Como tratar o valor que vem da view converter 1,1 para 1.1 e setar.
o VRaptor faz isso automaticamente…
faça na sua lógica:
System.out.println(produto.getValor());
o que ele imprime?
[quote=Lucas Cavalcanti]o VRaptor faz isso automaticamente…
faça na sua lógica:
System.out.println(produto.getValor());
o que ele imprime?[/quote]
Ele imprimi 0.0
tire a configuração do l10n, e crie essa classe:
@Convert(Double.class)
public class CustomDoubleConverter extends Converter<Double> {
public Double convert(String value, ....) {
if (value == null || "".equals(value)) return 0.0;
return Double.valueOf(value.replace(".", "").replace(",", "."));
}
}
imports de br.com.caelum.vraptor
[quote=Lucas Cavalcanti]tire a configuração do l10n, e crie essa classe:
@Convert(Double.class)
public class CustomDoubleConverter extends Converter<Double> {
public Double convert(String value, ....) {
if (value == null || "".equals(value)) return 0.0;
return Double.valueOf(value.replace(".", "").replace(",", "."));
}
}
imports de br.com.caelum.vraptor[/quote]
Ficou assim mais não converteu.
Por que a configuração do web.xml não funcionou ja que chega a inicializar conforme o log?
[code]
import java.text.MessageFormat;
import java.util.ResourceBundle;
import br.com.caelum.vraptor.Convert;
import br.com.caelum.vraptor.Converter;
import br.com.caelum.vraptor.converter.ConversionError;
@Convert(Double.class)
public class CustomDoubleConverter implements Converter{
public Double convert(String value, Class<? extends Double> type, ResourceBundle bundle) {
if (value == null || value.equals("")) {
return null;
}
try {
return Double.parseDouble( value.replace(".","").replace(",",".") );
} catch (NumberFormatException e) {
throw new ConversionError(MessageFormat.format(bundle.getString(“is_not_a_valid_number”), value));
}
}
}[/code]