Bom dia pessoal,
estou com uma dúvida no jsf 1.2 eu usava um atributo Integer na minha classe e ligava a um campo normal no jsf,
quando fazia alguma ação ele implicitamente ja era convertido de String(pagina) para Integer(atributo da minha classe),
agora no JSF 2.0 ocorre um erro de mismatch java.lang.IllegalArgumentException: argument type mismatch,
No JSF 2.0 eu sou obrigado a colocar explicito um conversor para meus campos Integer?
não, ele continua convertendo implicitamente.
posta teu código ai para podermos ver e entender melhor esse erro.
Ta mesmo o problema é quando uso meu componente:
[code]<?xml version='1.0' encoding='ISO-8859-1' ?>
<!-- IMPLEMENTATION -->
<cc:implementation>
<h:inputText value="#{cc.attrs.valor}" />
</cc:implementation>
[/code]
na minha pagina ta assim:
<util:teste id="codigoCursoMensalidade" valor="#{contasFace.conta.codigoCursoMensalidade}"/>
onde esse codigoCurso é do tipo integer
ai quando tento realizar alguma ação ele me gera esse erro
javax.faces.component.UpdateModelException: javax.el.ELException: /resources/ezcomp/teste.xhtml @13,47 value="#{cc.attrs.valor}": /receber/contas.xhtml @40,121 valor="#{contasFace.conta.codigoCursoMensalidade}": java.lang.IllegalArgumentException: argument type mismatch
at javax.faces.component.UIInput.updateModel(UIInput.java:853)
at javax.faces.component.UIInput.processUpdates(UIInput.java:735)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1113)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1113)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1113)
at org.richfaces.component.AbstractTogglePanel.processUpdates(AbstractTogglePanel.java:310)
at javax.faces.component.UIForm.processUpdates(UIForm.java:272)
at org.richfaces.context.PartialViewExecuteVisitCallback.visit(PartialViewExecuteVisitCallback.java:59)
at org.richfaces.context.BaseExtendedVisitContext.invokeVisitCallback(BaseExtendedVisitContext.java:337)
at javax.faces.component.UIForm.visitTree(UIForm.java:345)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1496)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1496)
at org.richfaces.context.ExtendedPartialViewContextImpl.executeComponents(ExtendedPartialViewContextImpl.java:249)
at org.richfaces.context.ExtendedPartialViewContextImpl.processPartialExecutePhase(ExtendedPartialViewContextImpl.java:229)
at org.richfaces.context.ExtendedPartialViewContextImpl.processPartial(ExtendedPartialViewContextImpl.java:208)
at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:1222)
at com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.el.ELException: /resources/ezcomp/teste.xhtml @13,47 value="#{cc.attrs.valor}": /receber/contas.xhtml @40,121 valor="#{contasFace.conta.codigoCursoMensalidade}": java.lang.IllegalArgumentException: argument type mismatch
at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:139)
at javax.faces.component.UIInput.updateModel(UIInput.java:818)
... 31 more
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.el.BeanELResolver.setValue(BeanELResolver.java:108)
at com.sun.faces.el.DemuxCompositeELResolver._setValue(DemuxCompositeELResolver.java:255)
at com.sun.faces.el.DemuxCompositeELResolver.setValue(DemuxCompositeELResolver.java:281)
at org.jboss.el.parser.AstPropertySuffix.setValue(AstPropertySuffix.java:73)
at org.jboss.el.parser.AstValue.setValue(AstValue.java:84)
at org.jboss.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249)
at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:131)
at com.sun.faces.el.CompositeComponentAttributesELResolver$ExpressionEvalMap.put(CompositeComponentAttributesELResolver.java:365)
at com.sun.faces.el.CompositeComponentAttributesELResolver$ExpressionEvalMap.put(CompositeComponentAttributesELResolver.java:287)
at javax.el.MapELResolver.setValue(MapELResolver.java:90)
at com.sun.faces.el.DemuxCompositeELResolver._setValue(DemuxCompositeELResolver.java:255)
at com.sun.faces.el.DemuxCompositeELResolver.setValue(DemuxCompositeELResolver.java:281)
at org.jboss.el.parser.AstPropertySuffix.setValue(AstPropertySuffix.java:73)
at org.jboss.el.parser.AstValue.setValue(AstValue.java:84)
at org.jboss.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249)
at com.sun.faces.facelets.el.ContextualCompositeValueExpression.setValue(ContextualCompositeValueExpression.java:170)
at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:131)
... 32 more
tem alguma coisa q eu possa fazer para corrigir esse problema?
cara, acho que o problema é que quando vc usa cc:attribute, tudo o que vc coloca dentro dessa tag é interpretado com string e não é convertido implicitamente. acho que nesse caso vc terá que fazer uma conversão explicita mesmo, no momento em que vc recupera esse valor de cc:attribute.
nem se eu colocar alguma coisa como type de object ou method-signature de alguma coisa da certo?
tipo
<cc:attribute name="valor" required="true" type="java.lang.Object" />
tenta colocar então o tipo Integer. se não der certo acho que tem que fazer a conversão mesmo.
É tbm não deu certo aqui, vou tentar achar alguma outra solução então, se não conseguir só com o converter mesmo ne.
Valeu.