[JAVA] JSF MySQL - Odświeżanie tabeli (obiektu?) po zapisie formularza

Witam ponownie. Jestem amatorem który w razie potrzeby tworzy jakieś rozwiązanie realizujące określone zadania (bo zrobie to szybciej niż złożenie zamówienia do IT, i/lub za darmo) w pracy :). Ostatnio do napisanej wyłącznie za pomocą JSP (serwlety) aplikacji musiałem (wciąż muszę) dorobić raczej prosty moduł, mający rejestrować zgłoszenia od klientów i przekazywać je dalej (znaczy udostępniać w innym widoku pracownikom innego departamentu). Coś mi strzeliło do głowy że to dobry moment żeby wykorzystać JSF (dla mnie nowość). Stworzenie formularza nie było wielkim wyzwaniem, ale formularz miał za zadanie równocześnie wyświetlać listę zarejestrowanych zgłoszeń. Poradziłem obie jakoś, ale obecnie napotkałem problem którego nie potrafię przeskoczyć. Lista działa poprawnie, ale w przypadku po zapisie zgłoszenia odświeża się z opóźnieniem.

 

Wygląda to następująco:

Wypełniam formularz (na tym etapie widzę już tabelę z listą zgłoszeń) -Ekran 1.jpg

Klikam zapisz.

W tabeli MySQL pojawia się wpis, ale tabela na stronie pozostaje niezmieniona (nowe wpisy nie pojawiają się). -Ekran 2

Uzupełniam formularz po raz drugi, zapisuję. 

Analogiczna sytuacja, ale w tabeli na stronie pojawia się poprzedni wpis (dopiero teraz). -Ekran 3

 

Tak sobie gdybam, że dzieje się tak, ponieważ najpierw strona uzupełnia tabele na podstawie danych w moim obiekcie (bo już został wypełniony), a dopiero potem pobiera nowe wartości. Dlatego po zapisie drugiego formularza na stronie widzę poprzedni wpis, a nie widzę ostatniego (aktualnego). Pytanie jak ten problem rozwiązać?

 

Testowane na Xampp 1.8.2

 

Kody:

faces-config.xml

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.2"
              xmlns="http://xmlns.jcp.org/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">

    
    
    <managed-bean>
        <managed-bean-name>ZapiszLead</managed-bean-name>
        <managed-bean-class>lead.FormularzRejestrujLead</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
            <property-name>pesel_agenta_DCC</property-name>
            <value>#{sessionScope.PESEL_agenta}</value>
        </managed-property>
    </managed-bean>
    
    <managed-bean>
        <managed-bean-name>MenegerLeadAgent</managed-bean-name>
        <managed-bean-class>lead.Meneger_ListaLeadowDCC</managed-bean-class>
            <managed-bean-scope>request</managed-bean-scope>
                <managed-property>
            <property-name>pesel_agenta_szukaj</property-name>
            <value>#{sessionScope.PESEL_agenta}</value>
        </managed-property></managed-bean>
    
    <navigation-rule>    
        <from-view-id>/Lead_Formularz_rejestruj_lead.xhtml</from-view-id>    
        <navigation-case>        
            <from-outcome>success</from-outcome>        
            <to-view-id>/Lead_Formularz_rejestruj_lead.xhtml</to-view-id>    
        </navigation-case>
        <navigation-case>        
            <from-outcome>failure</from-outcome>        
            <to-view-id>/Lead_save_failure.xhtml</to-view-id>    
        </navigation-case>
    </navigation-rule>
</faces-config>

Strona z formularzem (Lead_Formularz_rejestruj_lead.xhtml):

?xml version='1.0' encoding='UTF-8' ?
!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
ui:composition xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                template="./Lead_leadSzablon.xhtml"
                xmlns:h="http://xmlns.jcp.org/jsf/html"
                xmlns:f="http://xmlns.jcp.org/jsf/core"
                xmlns="http://www.w3.org/1999/xhtml"


    ui:define name="top"
        h1Formularz zgłoszeniowy Lead/h1
    /ui:define

    ui:define name="content"
        h:form id="formularz_lead"
            table
                tr
                    td colspan="2"
                        bPola wymagane:/b
                    /td
                /tr
                tr
                    td
                        h:outputLabel for="formularz_lead:region"Region:/h:outputLabel
                    /td
                    td
                        h:selectOneListbox id="region" value="#{ZapiszLead.region.value}" size="1"
                            f:selectItems value="#{ZapiszLead.regiony}"/
                        /h:selectOneListbox
                    /td
                /tr
                tr
                    td
                        h:outputLabel for="formularz_lead:telefon"Telefon:/h:outputLabel
                    /td
                    td
                        h:inputText id="telefon" value="#{ZapiszLead.telefon}" required="true" requiredMessage="Uzupełnienie numeru telefonu jest obowiązkowe!"
                            f:validateLength minimum="9" maximum="12" /
                            f:validateLongRange /
                        /h:inputText
                    /td
                /tr
                tr
                    td
                        h:outputLabel for="formularz_lead:imie_nazwisko_klienta"Imię i Nazwisko klienta/h:outputLabel
                    /td
                    td
                        h:inputText id="imie_nazwisko_klienta" value="#{ZapiszLead.imie_nazwisko_klienta}" required="true" requiredMessage="Uzupełnienie Imienia i Nazwiska jest obowiązkowe!"
                            f:validateLength minimum="3" maximum="50" /
                        /h:inputText
                    /td
                /tr
                tr
                    td
                        h:outputLabel for="formularz_lead:pesel_agenta_DCC"Pesel Agenta DCC:/h:outputLabel
                    /td
                    td
                        h:inputText id="pesel_agenta_DCC" value="#{ZapiszLead.pesel_agenta_DCC}" required="true" requiredMessage="Wysłanie leadu bez nr PESEL nie zostanie ci zaliczone!!"
                            f:validateLength minimum="11" maximum="11" /
                            f:validateLongRange/
                        /h:inputText
                    /td
                /tr
                tr
                    td colspan="2"
                        bPola opcjonalne:/b
                    /td
                /tr
                tr
                    td
                        h:outputLabel for="formularz_lead:dochod_netto"Dochód netto klienta(w zł):/h:outputLabel
                    /td
                    td
                        h:inputText id="dochod_netto" value="#{ZapiszLead.dochod_netto}" 
                        /h:inputText
                    /td
                /tr
                tr
                    td
                        h:outputLabel for="formularz_lead:rodzaj_umowy"Rodzaj umowy:/h:outputLabel
                    /td
                    td
                        h:inputText id="rodzaj_umowy" value="#{ZapiszLead.rodzaj_umowy}" 
                        /h:inputText
                    /td
                /tr
                tr
                    td
                        h:outputLabel for="formularz_lead:okres_zatrudnienia"Okres zatrudnienia w obecnej firmie:/h:outputLabel
                    /td
                    td
                        h:inputText id="okres_zatrudnienia" value="#{ZapiszLead.okres_zatrudnienia}" 

                        /h:inputText
                    /td
                /tr
                tr
                    td
                        h:outputLabel for="formularz_lead:kwota_kredytu"Oczekiwana kwota kredytu (w zł):/h:outputLabel
                    /td
                    td
                        h:inputText id="kwota_kredytu" value="#{ZapiszLead.kwota_kredytu}" 

                        /h:inputText
                    /td
                /tr
                tr
                    td
                        h:outputLabel for="formularz_lead:okres_kretytowania"Oczekiwany okres kretytowania:/h:outputLabel
                    /td
                    td
                        h:inputText id="okres_kretytowania" value="#{ZapiszLead.okres_kretytowania}" 

                        /h:inputText
                    /td
                /tr
                tr
                    td colspan="2"
                        h:commandButton label="ZapiszLead" action="#{ZapiszLead.zapiszLead}" value="Zapisz Lead"/
                    /td
                /tr
            /table
        /h:form
        br /
        br /
        table
            tr
                td
                    table border="2" frame="box" rules="all" id="tabela_leady"
                        caption align="top"bTwoje leady:/b/caption
                        tr
                            thData wniosku/th
                            thKlient/th
                            thTelefon br /klienta/th
                            thOczekiwana br /kwota/th
                            thRegion/th
                            thStatus/th
                        /tr
                        ui:repeat value="#{MenegerLeadAgent.leady_agenta}" var="ListaLeadowAgenta"
                            tr bgcolor="#{ListaLeadowAgenta.kolor_wiersza}"
                                td#{ListaLeadowAgenta.data_wniosku}/td
                                td#{ListaLeadowAgenta.imie_nazwisko_klienta}/td
                                td#{ListaLeadowAgenta.telefon_kl}/td
                                td#{ListaLeadowAgenta.kwota_kredytu}/td
                                td#{ListaLeadowAgenta.region}/td
                                td#{ListaLeadowAgenta.status}/td

                            /tr
                        /ui:repeat
                    /table
                /td
                td
                    table border="2" frame="box" rules="all" id="tabela_leady"
                        caption align="top"bLeady DCC:/b/caption
                        tr
                            thData wniosku/th
                            thAgent/th
                            thKlient/th
                            thTelefon br /klienta/th
                            thOczekiwana br /kwota/th
                            thRegion/th
                            thStatus/th
                        /tr
                        ui:repeat value="#{MenegerLeadAgent.leady_DCC}" var="ListaLeadowAgenta"
                            tr bgcolor="#{ListaLeadowAgenta.kolor_wiersza}"
                                td#{ListaLeadowAgenta.data_wniosku}/td
                                td#{ListaLeadowAgenta.imie_nazwisko_agenta}/td
                                td#{ListaLeadowAgenta.imie_nazwisko_klienta}/td
                                td#{ListaLeadowAgenta.telefon_kl}/td
                                td#{ListaLeadowAgenta.kwota_kredytu}/td
                                td#{ListaLeadowAgenta.region}/td
                                td#{ListaLeadowAgenta.status}/td

                            /tr
                        /ui:repeat
                    /table
                /td
            /tr
        /table
    /ui:define

/ui:composition

Klasa-ziarno Meneger_ListaLeadowDCC:

/*
 * 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 lead;

import KLASY.Connect;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;

/**
 *
 * @author Adam
 */
public class Meneger_ListaLeadowDCC {

    private ListListaLeadowAgenta leady_agenta;
    private ListListaLeadowAgenta leady_DCC;
    private String pesel_agenta_szukaj;

    public Meneger_ListaLeadowDCC() {
    }

    @PostConstruct
    public void ListaLeadow() {
//ustawienie daty dzisiejszej i jej cofnięcie o miesiąc
        SimpleDateFormat format_zap = new SimpleDateFormat("yyyy-MM-dd");
        Calendar data = Calendar.getInstance();
        data.add(Calendar.DAY_OF_MONTH, -31);

        //pobranie z webxml parametrów połaczenia.
        FacesContext ctx = FacesContext.getCurrentInstance();
        String baza_taski = ctx.getExternalContext().getInitParameter("BAZA_Taski");
        String LinkBaza = ctx.getExternalContext().getInitParameter("LinkBaza") + "?useUnicode=truecharacterEncoding=utf8";
        String LoginBaza = ctx.getExternalContext().getInitParameter("LoginBaza");
        String PassBaza = ctx.getExternalContext().getInitParameter("PasswordBaza");
        String baza_xagent = ctx.getExternalContext().getInitParameter("BAZA_XAgent");
        //zestawienie połaczenia z bazą danych
        Connect polaczenie = new Connect();
        try (Connection conn = polaczenie.PolaczenieBaza(LinkBaza, LoginBaza, PassBaza)) {
            Statement stmt = conn.createStatement();
            //pobranie listy regionow z bazy
            stmt.execute("USE " + baza_taski);
            leady_agenta = new ArrayList();
            leady_DCC = new ArrayList();
            ResultSet rs = stmt.executeQuery("SELECT "
                    //tu kod SQL pobierający dane
                    + "");
            while (rs.next()) {
                    //tu tworzę obiekty zawierające dane do tabeli (List)
                if (rs.getString(13).equals(this.pesel_agenta_szukaj)) {
                    leady_agenta.add(new ListaLeadowAgenta(rs.getDate(1).toString() + " " + rs.getTime(1).toString(), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6), rs.getString(7), rs.getString(8), rs.getString(9), rs.getString(10), rs.getString(11), rs.getString(12)));
                }
                leady_DCC.add(new ListaLeadowAgenta(rs.getDate(1).toString() + " " + rs.getTime(1).toString(), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6), rs.getString(7), rs.getString(8), rs.getString(9), rs.getString(10), rs.getString(11), rs.getString(12)));
            }

            conn.close();
        } catch (IOException | SQLException ex) {
            Logger.getLogger(Meneger_ListaLeadowDCC.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void setPesel_agenta_szukaj(String pesel_agenta_szukaj) {
        this.pesel_agenta_szukaj = pesel_agenta_szukaj;
    }

    public String getPesel_agenta_szukaj() {
        return pesel_agenta_szukaj;
    }

// public void setLeady_agenta(ListListaLeadowAgenta leady_agenta) {
// this.leady_agenta = leady_agenta;
// }
    public ListListaLeadowAgenta getLeady_agenta() {
        return leady_agenta;
    }

// public void setLeady_DCC(ListListaLeadowAgenta leady_DCC) {
// this.leady_DCC = leady_DCC;
// }
    public ListListaLeadowAgenta getLeady_DCC() {
        return leady_DCC;
    }

}

Klasa ziarno ListaLeadowAgenta. To ona przechowuje dane do tabeli.

/*
 * 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 lead;

/**
 *
 * @author Adam
 */
public class ListaLeadowAgenta {

    private String imie_nazwisko_agenta;
    private String imie_nazwisko_klienta;
    private String telefon_kl;
    private String region;
    private String data_wniosku;
    private String status;
    private String dochod_netto;
    private String rodzaj_umowy;
    private String okres_zatrudnienia;
    private String kwota_kredytu;
    private String okres_kretytowania;
    private String kolor_wiersza;

    public ListaLeadowAgenta() {
    }

    public ListaLeadowAgenta(String data_wniosku, String imie_nazwisko_agenta, String imie_nazwisko_klienta, String telefon_kl, String region, String status, String dochod_netto, String rodzaj_umowy, String okres_zatrudnienia, String kwota_kredytu, String okres_kretytowania,String kolor_wiersza) {
        this.data_wniosku = data_wniosku;
        this.imie_nazwisko_agenta = imie_nazwisko_agenta;
        this.imie_nazwisko_klienta = imie_nazwisko_klienta;
        this.telefon_kl = telefon_kl;
        this.region = region;
        this.status = status;
        this.dochod_netto = dochod_netto;
        this.rodzaj_umowy = rodzaj_umowy;
        this.okres_zatrudnienia = okres_zatrudnienia;
        this.kwota_kredytu = kwota_kredytu;
        this.okres_kretytowania = okres_kretytowania;
        if (kolor_wiersza.equals("")){
            kolor_wiersza="white";
        }
        this.kolor_wiersza=kolor_wiersza;
    }

    public String getKolor_wiersza() {
        return kolor_wiersza;
    }

    public void setKolor_wiersza(String kolor_wiersza) {
        this.kolor_wiersza = kolor_wiersza;
    }

    public String getDochod_netto() {
        return dochod_netto;
    }

    public void setDochod_netto(String dochod_netto) {
        this.dochod_netto = dochod_netto;
    }

    public String getRodzaj_umowy() {
        return rodzaj_umowy;
    }

    public void setRodzaj_umowy(String rodzaj_umowy) {
        this.rodzaj_umowy = rodzaj_umowy;
    }

    public String getOkres_zatrudnienia() {
        return okres_zatrudnienia;
    }

    public void setOkres_zatrudnienia(String okres_zatrudnienia) {
        this.okres_zatrudnienia = okres_zatrudnienia;
    }

    public String getKwota_kredytu() {
        return kwota_kredytu;
    }

    public void setKwota_kredytu(String kwota_kredytu) {
        this.kwota_kredytu = kwota_kredytu;
    }

    public String getOkres_kretytowania() {
        return okres_kretytowania;
    }

    public void setOkres_kretytowania(String okres_kretytowania) {
        this.okres_kretytowania = okres_kretytowania;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getData_wniosku() {
        return data_wniosku;
    }

    public void setData_wniosku(String data_wniosku) {
        this.data_wniosku = data_wniosku;
    }

    public String getImie_nazwisko_agenta() {
        return imie_nazwisko_agenta;
    }

    public void setImie_nazwisko_agenta(String imie_nazwisko_agenta) {
        this.imie_nazwisko_agenta = imie_nazwisko_agenta;
    }

    public String getImie_nazwisko_klienta() {
        return imie_nazwisko_klienta;
    }

    public void setImie_nazwisko_klienta(String imie_nazwisko_klienta) {
        this.imie_nazwisko_klienta = imie_nazwisko_klienta;
    }

    public String getTelefon_kl() {
        return telefon_kl;
    }

    public void setTelefon_kl(String telefon_kl) {
        this.telefon_kl = telefon_kl;
    }

    public String getRegion() {
        return region;
    }

    public void setRegion(String region) {
        this.region = region;
    }
}

I wreszcie ziarno obsługujące formularz(FormularzRejestrujLead):

/*
 * 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 lead;

import KLASY.Connect;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

/**
 *
 * @author adobucki
 */
public class FormularzRejestrujLead {

    private String telefon;
    private String imie_nazwisko_klienta;
    private String pesel_agenta_DCC;
    private String dochod_netto;
    private String rodzaj_umowy;
    private String okres_zatrudnienia;
    private String kwota_kredytu;
    private String okres_kretytowania;
    private ListSelectItem regiony;
    private SelectItem region;
    SelectItem element;

    public ListSelectItem getRegiony() throws SQLException, IOException {
        regiony = new ArrayListSelectItem();
        //pobranie z ziarna ConnectDane parametrów połaczenia. Ziarno dostępne jest dzięki referencji w faces-config.xml
        FacesContext ctx = FacesContext.getCurrentInstance();
        String baza_taski = ctx.getExternalContext().getInitParameter("BAZA_Taski");
        String LinkBaza = ctx.getExternalContext().getInitParameter("LinkBaza") + "?useUnicode=truecharacterEncoding=utf8";
        String LoginBaza = ctx.getExternalContext().getInitParameter("LoginBaza");
        String PassBaza = ctx.getExternalContext().getInitParameter("PasswordBaza");

        //zestawienie połaczenia z bazą danych
        Connect polaczenie = new Connect();
        Connection conn = polaczenie.PolaczenieBaza(LinkBaza, LoginBaza, PassBaza);
        Statement stmt = conn.createStatement();
        //pobranie listy regionow z bazy
        stmt.execute("USE " + baza_taski);
        ResultSet rs = stmt.executeQuery("SELECT...");
        while (rs.next()) {
            element = new SelectItem(rs.getInt(1), rs.getString(2));
            regiony.add(element);
        }
        conn.close();

        return regiony;
    }

    public FormularzRejestrujLead() {

    }

    public String getDochod_netto() {
        return dochod_netto;
    }

    public void setDochod_netto(String dochod_netto) {
        this.dochod_netto = dochod_netto;
    }

    public String getRodzaj_umowy() {
        return rodzaj_umowy;
    }

    public void setRodzaj_umowy(String rodzaj_umowy) {
        this.rodzaj_umowy = rodzaj_umowy;
    }

    public String getOkres_zatrudnienia() {
        return okres_zatrudnienia;
    }

    public void setOkres_zatrudnienia(String okres_zatrudnienia) {
        this.okres_zatrudnienia = okres_zatrudnienia;
    }

    public String getKwota_kredytu() {
        return kwota_kredytu;
    }

    public void setKwota_kredytu(String kwota_kredytu) {
        this.kwota_kredytu = kwota_kredytu;
    }

    public String getOkres_kretytowania() {
        return okres_kretytowania;
    }

    public void setOkres_kretytowania(String okres_kretytowania) {
        this.okres_kretytowania = okres_kretytowania;
    }

    public SelectItem getRegion() {
        if (region == null) {
            region = new SelectItem(1, "1");
        }
        return region;
    }

    public void setRegion(SelectItem region) {
        this.region = region;
    }

    public String getTelefon() {
        return telefon;
    }

    public void setTelefon(String telefon) {
        this.telefon = telefon;
    }

    public String getImie_nazwisko_klienta() {
        return imie_nazwisko_klienta;
    }

    public void setImie_nazwisko_klienta(String imie_nazwisko_klienta) {
        this.imie_nazwisko_klienta = imie_nazwisko_klienta;
    }

    public String getPesel_agenta_DCC() {
        return pesel_agenta_DCC;
    }

    public void setPesel_agenta_DCC(String pesel_agenta_DCC) {
        this.pesel_agenta_DCC = pesel_agenta_DCC;
    }

    public String zapiszLead() throws IOException, SQLException {
        //pobranie aktualnej daty i godziny

        SimpleDateFormat format_zap = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar data = Calendar.getInstance();

        //pobranie z web.xml parametrów połaczenia. 
        FacesContext ctx = FacesContext.getCurrentInstance();
        String baza_taski = ctx.getExternalContext().getInitParameter("BAZA_Taski");
        String LinkBaza = ctx.getExternalContext().getInitParameter("LinkBaza") + "?useUnicode=truecharacterEncoding=utf8";
        String LoginBaza = ctx.getExternalContext().getInitParameter("LoginBaza");
        String PassBaza = ctx.getExternalContext().getInitParameter("PasswordBaza");

        try {
            //zestawienie połaczenia z bazą danych
            Connect polaczenie = new Connect();
            Connection conn = polaczenie.PolaczenieBaza(LinkBaza, LoginBaza, PassBaza);
            Statement stmt = conn.createStatement();
            //wstawienie nowego leadu do bazy
            stmt.execute("USE " + baza_taski);
            stmt.executeUpdate("INSERT INTO 
             //SQL zapisujący do tabeli");
            conn.close();
        } catch (Exception e) {
            Logger.getLogger(FormularzRejestrujLead.class.getName()).log(Level.SEVERE, null, e);
            return "failure";
        }

        return "success";
    }
}

Aktualizacja (2014-07-20):

Udało mi się rozwiązać problem, choć średnio mi się podoba. Może ktoś zna lepszy sposób?

Moje rozwiązanie:

W ziarnie obsługującym formularz (FormularzRejestrujLead) dodałem fragment “ręcznie” dodający wpis z formularza (metoda zapiszLead()). Rzeczony fragment:

//poniważ lista na stronie nie chce się odświerzać prawidłowo, nowy wpis dodaję do listy "ręcznie"
            ListaLeadowAgenta wstawka = new ListaLeadowAgenta(format_zap.format(data.getTime()), "Twój", this.getImie_nazwisko_klienta(), this.getTelefon(), this.getRegion().getDescription(), "0", this.getDochod_netto(), this.getRodzaj_umowy(), this.getOkres_zatrudnienia(), this.getKwota_kredytu(), this.getOkres_kretytowania(), "#0033CC");
            ListListaLeadowAgenta lista_a = new ArrayList();
            ListListaLeadowAgenta lista_dcc = new ArrayList();
            lista_a.add(wstawka);
            lista_dcc.add(wstawka);
            lista_a.addAll(this.getMeneger().getLeady_agenta());
            lista_dcc.addAll(this.getMeneger().getLeady_DCC());
            this.meneger.setLeady_DCC(lista_dcc);
            this.meneger.setLeady_agenta(lista_a);

post-255523-0-09447500-1405802943_thumb.

post-255523-0-65294100-1405802945_thumb.

post-255523-0-63419100-1405802947_thumb.

Możesz jeszcze wykorzystać ten wzorzec (http://en.wikipedia.org/wiki/Post/Redirect/Get), co jest ogólnie rzecz biorąc dobrym pomysłem, aby zabezpieczyć się przy okazji przed dublowaniem wpisów.

Choć zabolało (zwłaszcza ten fragment o konwencji pisania kodu - bo nie jest dla mnie jasny), to jednak twój wpis dostarczył mi zadziwiająco dużo informacji. Ich przetrawienie zajmie mi chwilę, ale… wielkie dzięki! :smiley: