[RESOLVIDO]Erro : no suitable constructor

12 respostas
E

Tenho DataGrid, junto com o checkbox e ele esta vindo com o valores certinho, de acordo com o checkbox selecionado, porem
criei uma lista para preencher esse valores e preciso “alimenta-la” e fiz da seguinte forma :

itensguia = new ArrayList<Itensguia>();          
       
        for (Tabproc tab : tabprocList1) {               
            /*System.out.println(tab.getTabprocPK().getCodproc());                      
            System.out.println(tab.getDescricao());   */
            itensguia.add(new Itensguia(1,2200,tab.getTabprocPK().getCodproc(),1));
            
            
        }

Porem esta dando o erro abaixo :

no suitable constructor found for Itensguia(int,int,String,int)
constructor Itensguia.Itensguia(Integer) is not applicable
(actual and formal argument lists differ in length)
constructor Itensguia.Itensguia() is not applicable
(actual and formal argument lists differ in length)
constructor Itensguia.Itensguia(int,int,Tabproc,Cadguia) is not applicable
(actual argument String cannot be converted to Tabproc by method invocation conversion)

Segue abaixo o codigo completo

@Entity
@Table(name = "itensguia")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Itensguia.findAll", query = "SELECT i FROM Itensguia i"),
    @NamedQuery(name = "Itensguia.findByQuant", query = "SELECT i FROM Itensguia i WHERE i.quant = :quant"),
    @NamedQuery(name = "Itensguia.findById", query = "SELECT i FROM Itensguia i WHERE i.id = :id")})
public class Itensguia implements Serializable {
    private static final long serialVersionUID = 1L;
    @Column(name = "quant")
    private Integer quant;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @JoinColumns({
        @JoinColumn(name = "codtab", referencedColumnName = "codtab"),
        @JoinColumn(name = "codproc", referencedColumnName = "codproc"),
        @JoinColumn(name = "seqproc", referencedColumnName = "seqproc")})
    @ManyToOne
    private Tabproc tabproc;
    @JoinColumn(name = "codguia", referencedColumnName = "codguia")
    @ManyToOne(optional = false)
    private Cadguia codguia;
    
    public Itensguia(int quant, int id, Tabproc tabproc, Cadguia codguia) {
                this.quant = quant;
                this.id = id;
                this.tabproc=tabproc;
                this.codguia=codguia;
        }
    
**************************************************************

@ManagedBean(name="cadguiaMbean")
@ViewScoped
public class CadguiaMb extends ManagedBeanGenerico<Cadguia, CadguiaServico> implements Serializable {

    private List<Itensguia> itensguia;
    
   public void itensselecionadosProcedimentos() {  
        itensguia = new ArrayList<Itensguia>();          
       
        for (Tabproc tab : tabprocList1) {               
            /*System.out.println(tab.getTabprocPK().getCodproc());                      
            System.out.println(tab.getDescricao());   */
            itensguia.add(new Itensguia(1,2200,tab.getTabprocPK().getCodproc(),1));
            
            
        }  
          
    }

12 Respostas

E

Como eu poderia passar Tabproc e um Cadguia ???

Pode me dar uma luz por favor ??

E

Tentei fazer assim :

Porem esta dando o erro abaixo :

GRAVE: java.lang.NoSuchMethodError: br.uniplan.modelo.planouni.Itensguia.(IILbr/uniplan/modelo/planouni/Tabproc;)V

at br.uniplan.controle.CadguiaMb.itensselecionadosProcedimentos(CadguiaMb.java:276)

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 com.sun.el.parser.AstValue.invoke(AstValue.java:254)

at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:302)

at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:39)

at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)

at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:153)

at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)

at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)

at javax.faces.component.UICommand.broadcast(UICommand.java:300)

at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)

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:593)

at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)

at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)

at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)

at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)

at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)

at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)

at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)

at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)

at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)

at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)

at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)

at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)

at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)

at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)

at com.sun.grizzly.ContextTask.run(ContextTask.java:71)

at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)

at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)

at java.lang.Thread.run(Thread.java:662)
Minha Entidade

//    public Itensguia(int quant, int id, Tabproc tabproc, Cadguia codguia) {
        public Itensguia(int quant, int id, Tabproc tabproc)     
{
                this.quant = quant;
                this.id = id;
                this.tabproc=tabproc;
                ///this.codguia=codguia;
        }
********************************************
Bean 
        itensguia = new ArrayList<Itensguia>();          
       
        for (Tabproc tab : tabprocList1)      
       {                                                
            itensguia.add(new Itensguia(1,2200,tab));
            System.out.print("fdsfasdfsda");
            
        }
R

O que isso te diz?

E

Fiz um teste e o erro mudou .rs…o que pode ser ???

R

Você tem que largar a metodologia marreta e tentar entender o erro. Leia e responda, o que o erro te diz?

E

Rodrigo , para ser sincero, no segundo erro nao entendi nada .

R

Vamos lá, no suitable constructor found, se você jogasse isso no Google Translator e traduzisse para português, a resposta seria algo como nenhum construtor adequado encontrado.

Como assim nenhum construtor adequado? Aí você olha para os argumentos (int, int, String, int).

Você tem algum construtor na classe Itensguia que receba esses argumentos?

E

Bom dia Rodrigo,

O construtor da minha classe itensguia :

public Itensguia(int quant, int id, Tabproc tabproc, Cadguia codguia) {
//        public Itensguia(int quant, int id, Tabproc tabproc) {
                this.quant = quant;
                this.id = id;
                this.tabproc=tabproc;
                ///this.codguia=codguia;
        }
R

Só de bater o olho dá pra ver que o construtor não bate com os argumentos que você está passando.

E

Fiz assim entao rodrigo,

private Cadguia cadguia;    


        for (Tabproc tab : tabprocList1) { 
           
                        itensguia.add(new Itensguia(1,2200,tab,cadguia));
            System.out.print("fdsfasdfsda");
            
        }

pelo menos agora nao esta dando nenhum erro .

R

Justamente porque você está passando os argumentos do tipo correto agora :slight_smile:

E

Obrigado Rodrigo, abc

Criado 19 de março de 2013
Ultima resposta 20 de mar. de 2013
Respostas 12
Participantes 2