PrimeFaces DataTable inCell Editing roweditevent

时间:2012-10-30 14:35:03

标签: jsf-2 datatable primefaces

我对数据表单元格编辑有疑问。我的更新查询正在运行但更新旧值。我正在使用JDBC,PrimeFaces 3.4 GlassFish 3.1 JSF 2+。当我计算执行rows = 1时。 更新的用户和update_time正在改变。但编辑后的输入值不会改变。

我的xhtml

<?xml version='1.0' encoding='UTF-8' ?>                                    
                 <p:panel header="Ürün Ekleme Formu" toggleOrientation="vertical" toggleable="true">                                   
                    <p:panelGrid columns="2">               
                    <h:outputText value="Ürün Adı:"/><p:column><p:inputText value="#{urunlist.mahsul.urunAdi}" required="true" requiredMessage="Ürün adı?"/></p:column>

                                    <h:outputText value="Tüik Kodu:"/><p:inputText value="#{urunlist.mahsul.tuikKodu}"/>

                                    <h:outputText value="İva Kodu:"/><p:inputText value="#{urunlist.mahsul.tvaKodu}"/>

                                    <h:outputText value="Üretim Dönemi:"/><p:autoComplete  value="#{urunlist.mahsul.uretimDonemi}" completeMethod="#{urunlist.autoComplate(ud)}" var="ud_list" itemLabel="#{ud_list.uretimDonemi}" converter="javax.faces.Character" itemValue="#{ud_list}" forceSelection="false" multiple="false"/>
                                    <h:outputText value="Üretim Şekli"/><p:inputText value="#{urunlist.mahsul.uretimSekli}"/>

                                    <p:commandButton action="#{urunlist.urunKaydet()}" value="Kaydet" update="dataTable"/><input name="hiddo"  type="hidden"  value="#{login.kullaniciAdi}"/>                                       
                                </p:panelGrid>
                                </p:panel>
                            </ui:insert>
                        </p:panel>
                        <p:panel id="viewPanel">
                            <ui:insert>view Layout</ui:insert>
                        </p:panel>
                        <p:panel id="updatePanel">
                            <ui:insert>Update Form</ui:insert>
                        </p:panel>
                   </p:panelGrid>
                </div>
                <div>
                   <p:outputPanel id="dataTable" >
                        <p:panel  header="Ürünler">
                            <p:dataTable value="#{urunlist.urunGetir()}" var="u" paginator="true" rows="5" editable="true" sortOrder="true" draggableColumns="true" rowKey="#{u.urunKodu}">
                                <p:ajax event="rowEdit" listener="#{urunlist.urunGuncelle}" update=":mainForm:messages"/>

                                <p:column>
                                    <p:cellEditor>
                                        <f:facet name="output">
                                            <h:outputText value="#{u.urunKodu}"/>
                                        </f:facet>
                                        <f:facet name="input">
                                            <input name="ukod" value="#{u.urunKodu}" type="hidden" disabled="true" />
                                        </f:facet>
                                    </p:cellEditor>
                                </p:column>
                                <p:column>
                                <p:cellEditor>
                                        <f:facet name="output">
                                            <h:outputText value="#{u.tuikKodu}"/>
                                        </f:facet>
                                        <f:facet name="input">
                                            <p:inputText value="#{u.tuikKodu}"/>
                                        </f:facet>
                                    </p:cellEditor>
                                </p:column>
                                <p:column>
                                    <p:cellEditor>
                                        <f:facet name="output">
                                            <h:outputText value="#{u.tvaKodu}"/>
                                        </f:facet>
                                        <f:facet name="input">
                                            <h:inputText value="#{u.tvaKodu}"/>
                                        </f:facet>
                                    </p:cellEditor>
                                </p:column>
                                <p:column>
                                <p:cellEditor>
                                        <f:facet name="output">
                                            <h:outputText value="#{u.urunAdi}"/>
                                        </f:facet>
                                        <f:facet name="input">
                                            <h:inputText value="#{u.urunAdi}"/>
                                        </f:facet>
                                    </p:cellEditor>
                                </p:column>
                                <p:column>
                                <p:cellEditor>
                                        <f:facet name="output">
                                            <h:outputText value="#{u.uretimDonemi}(#{u.uretimSekli}-#{u.sulama})"/>
                                        </f:facet>
                                        <f:facet name="input">
                                            <p:panelGrid columns="3">
                                            <p:column>
                                                <h:inputText size="2" value="#{u.uretimDonemi}" title="Üretim Dönemi"/>
                                            </p:column>
                                            <p:column>
                                                <h:inputText size="2" value="#{u.uretimSekli}"/>
                                            </p:column>
                                            <p:column>
                                                <h:inputText size="2" value="#{u.sulama}"/>
                                            </p:column>
                                            </p:panelGrid>

                                        </f:facet>
                                    </p:cellEditor>
                                </p:column>
                                <p:column>
                                #{u.ekleyen}
                                </p:column>
                                <p:column>
                                    <h:outputText value="#{u.eklemeZamani}">
                                        <f:convertDateTime pattern="dd.MMMM.yy--hh:mm:ss" timeZone="Turkey"/> </h:outputText>                 
                                </p:column>
                                <p:column>
                                    <p:rowEditor/>
                                </p:column>




                            </p:dataTable>
                        </p:panel>
                    </p:outputPanel>

                </div>
            </h:form>
</ui:define>

我的ManagedBean

public LoginBean getLoginned() {
    return loginned;
}

public void setLoginned(LoginBean loginned) {
    this.loginned = loginned;
}
public urunBean(){
    mahsul=new urun();
    loginned=new LoginBean();
}

public urun getMahsul() {
    return mahsul;
}

public void setMahsul(urun mahsul) {
    this.mahsul = mahsul;
}

public List<urun> urunGetir() throws SQLException{

    try {

         vk=DriverManager.getConnection("jdbc:postgresql://localhost:5432/uretim","postgres","Fa1276");
    } catch (SQLException ex) {
        System.out.println("DriverManager hatası "+ex);
    }
    PreparedStatement ps=vk.prepareStatement("select urun_kodu, tuik_kodu, iva_kodu, urun_adi, uretim_donemi, uretim_sekli, sulama, ekleyen, ekleme_zamani  from urunler order by urun_kodu desc");
    ResultSet sonuc=ps.executeQuery();
    liste = new ArrayList<urun>();


        while (sonuc.next()){
     masul=new urun();

        masul.setUrunKodu(sonuc.getLong("urun_kodu"));
        masul.setTuikKodu(sonuc.getLong("tuik_kodu"));
        masul.setTvaKodu(sonuc.getLong("iva_kodu"));
        masul.setUrunAdi(sonuc.getString("urun_adi"));
        masul.setUretimDonemi(sonuc.getString("uretim_donemi"));
        masul.setUretimSekli(sonuc.getString("uretim_sekli"));
        masul.setSulama(sonuc.getBoolean("sulama"));
        masul.setEkleyen(sonuc.getString("ekleyen"));
        masul.setEklemeZamani(sonuc.getTimestamp("ekleme_zamani"));

        liste.add(masul);

        }



    return this.liste;
}

public void urunKaydet(){ 


    String urunEkle=("insert into urunler(urun_kodu, tuik_kodu, iva_kodu, urun_adi, uretim_donemi, uretim_sekli, sulama, ekleyen, ekleme_zamani) values (nextval('urunler_urun_kodu_seq'),?,?,?,?,?,?,?, now())");


    try {

    PreparedStatement insert=vk.prepareStatement(urunEkle);


    insert.setLong(1, mahsul.getTuikKodu());
    insert.setLong(2,mahsul.getTvaKodu());
    insert.setString(3,mahsul.getUrunAdi());
    insert.setString(4,mahsul.getUretimDonemi());
    insert.setString(5, mahsul.getUretimSekli());
    insert.setBoolean(6,false);
    insert.setString(7,session);
    //insert.setString(9,java.sql.Timestamp);
    //insert.executeQuery();
    insert.executeUpdate();
    insert.close();
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage( mahsul.urunAdi+" ürünü\nkaydedildi "));
    //String selectInput= UIComponent.getCurrentComponent(null).getId().toString();
    //System.out.println(selectInput);

    }
    catch (SQLException sqe){
    System.out.println("sorguda hata var "+sqe);
    }




}
public List<urun> autoComplate(urun ud) throws SQLException{
    PreparedStatement udps=vk.prepareStatement("select uretim_donemi from urunler group by uretim_donemi");
    ResultSet udset=udps.executeQuery();
    List<urun> ud_list=new ArrayList<urun>();
    while(udset.next()){

        ud.uretimDonemi=udset.getString("uretim_donemi");
        ud_list.add(ud);

    }


    /*
    PreparedStatement usps=vk.prepareStatement("select uretim_sekli from urunler group by uretim_sekli");
    ResultSet usset=usps.executeQuery();
    List<urun> us_list=new ArrayList<urun>();
    while(usset.next()){
        urun us=new urun();
        us.uretimSekli=usset.getString("uretim_sekli");
        us_list.add(us);
        return us_list;
    }
    */
    return ud_list;

}

public void urunGuncelle(RowEditEvent olay){
    this.vk=vk;

    urun urn=(urun)olay.getObject();        
    ExternalContext getirici=FacesContext.getCurrentInstance().getExternalContext();
    String gullanici=getirici.getRequestParameterMap().get("hiddo");
    //String gullanici=user.getKullaniciAdi();
    Long id=(Long)urn.getUrunKodu();

    System.out.println(id+"-"+gullanici);
    try {
        PreparedStatement urunguncelle=vk.prepareStatement("update urunler  set urun_adi=?, uretim_donemi=?, uretim_sekli=?, guncelleyen=?, guncelleme_zamani=now() where urun_kodu=?");
        urunguncelle.setString(1, urn.getUrunAdi());
        urunguncelle.setString(2, urn.getUretimDonemi());
        urunguncelle.setString(3, urn.getUretimSekli());
        urunguncelle.setString(4, gullanici);
        urunguncelle.setLong(5, id);

        urunguncelle.executeUpdate();
        int etkilenen=urunguncelle.executeUpdate();
        if (etkilenen > 0) {
        System.out.println(urn.getUrunAdi()+" adlı ürün güncellendi "+etkilenen+" satır.");
        FacesContext.getCurrentInstance().addMessage(null,new FacesMessage(urn.urunAdi+" adlı ürün güncellendi"));
            System.out.println(urn.getUrunAdi()+" adlı ürün güncellendi!");
        }else{
            System.out.println("Güncelleme olmadı");
            FacesContext.getCurrentInstance().addMessage(null,new FacesMessage("Güncelleme olmadı."));
        }
        urunguncelle.close();

        vk.close();


    } catch (SQLException ex) {
        System.out.println("Güncelleme hatası "+ex);
    }

}
/*
public void deneme(urun u){



    String mesaj=("Ellediğiniz satırın id'si "+u.urunKodu+"!");
    FacesContext.getCurrentInstance().addMessage(null,new FacesMessage(mesaj));

}*/


}

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。我重写了boolean,hashcode和toString方法。我添加了一个关于我的select查询方法的构造函数my bean。