Aplikacja mapuje mapę do klasy

0

Witam,
Chcę dopisać do mojego sklepu koszyk, jego zawartość przetrzymywana jest w zmiennej sesyjnej, nie wiadomo czemu aplikacja rzutuje mapę w której trzymam koszyk na moją klasę Koszyk
co skutkuje błędami typu Method not found: {idProduktu=1, ilosc=2}.DodajKoszyk()

Kod Koszyk.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package moduly;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import data.Produkty;
import data.Uzytkownicy;
import data.Zamowienia;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

/**
 *
 * @author Browar
 */
@ManagedBean
@SessionScoped
public class Koszyk {
    SessionFactory factory = new Configuration().configure().buildSessionFactory();
    Session session = factory.openSession();
    Transaction tx = null;

     HttpSession sesja;
    
    
    @PostConstruct
    public void initialiseSession() {
        sesja = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
        
    }    
    
    private Integer idProduktu;
    private Integer ilosc;

    public Integer getIdProduktu(){
        return idProduktu;
    }
    
    public void setIdProduktu(Integer idProduktu){
        this.idProduktu = idProduktu;
    }
    
    public Integer getIlosc(){
        return ilosc;
    }
    
    public void setIlosc(Integer ilosc){
        this.ilosc = ilosc;
    }
    
    public Koszyk() {
    }
        
    public void DodajKoszyk(){  
        Map<Integer,Integer> kosz = (Map<Integer,Integer>) sesja.getAttribute("koszyk");
        kosz.put(1,2);
        sesja.setAttribute("koszyk",kosz);
    }
    
    public Map<Integer,Integer> ZwrocKoszyk(){
        Map<Integer, Integer> koszyk = new LinkedHashMap<>();
       koszyk.put(12,12);
       // koszyk.put(11,12);
        
       // if(1==2)
       
       // return (Map<Integer,Integer>) sesja.getAttribute("koszyk");
      //  else
        return koszyk;
        
    }
    
}

Fragment z Logowanie.java tworzącego zmienną sesyjną z koszykiem

                Map<Integer, Integer> koszyk = new LinkedHashMap<>();
                
                sesja.setAttribute("koszyk",koszyk);

Fragment pliku xhtml dodającego produkt do koszyka

                    <h:form id="loguj" >
                            
                         
                        <h4 style="color: white;font-size: 12pt">Login:</h4> 
                        <h:inputText value="#{koszyk.idProduktu}" /><br />
                        
                        <h4 style="color: white;font-size: 12pt">Hasło:</h4> 
                        <h:inputText value="#{koszyk.ilosc}" /><br />
                         
                         
                        
<br />
<h:commandButton value="Loguj" actionListener="#{koszyk.DodajKoszyk()}" />
                    
                    </h:form>
0

Może zapodaj stacktrace?

0
matt_z napisał(a):

Może zapodaj stacktrace?

javax.el.MethodNotFoundException: Method not found: {1=2, idProduktu=1, ilosc=2}.DodajKoszyk()
	at org.apache.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:268)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:240)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:149)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:813)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
	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:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

Pierwsza para klucz wartość jest dodana bezpośrednio w javie a 2 następne, które powinny być jedną z formularza.

0

No napisałeś przecież czarno na białym u siebie w kodzie:

<h:commandButton value="Loguj" actionListener="#{koszyk.DodajKoszyk()}" />

Podczas gdy wcześniej robisz

Map<Integer, Integer> koszyk = new LinkedHashMap<>();
 
                sesja.setAttribute("koszyk",koszyk);
0
Pinek napisał(a):

No napisałeś przecież czarno na białym u siebie w kodzie:

<h:commandButton value="Loguj" actionListener="#{koszyk.DodajKoszyk()}" />

Podczas gdy wcześniej robisz

Map<Integer, Integer> koszyk = new LinkedHashMap<>();
 
                sesja.setAttribute("koszyk",koszyk);

Chyba nie rozumiem bo przy logowaniu tworze koszyk, a funkcja dodaj koszyk ma dodawać do koszyka i w sumie dodaje problem w tym że dodaje parę nazwa zmiennej = wartość a ma dodawać wartość 1 zmiennej jako klucz a 2 jako wartość.

1 użytkowników online, w tym zalogowanych: 0, gości: 1