2012-10-30 78 views
1

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

我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

您可以使用实际的导入和注释扩展托管bean的源代码吗? –

+0

ManagedBean和viewscoped是我的注释。 – Orhan

+0

import java.io.Serializable; import java.sql。*; import java.util.ArrayList; import java.util.List; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import login.LoginBean; import org.primefaces.event.RowEditEvent; – Orhan

回答

0

我解决我的问题。我重写了布尔,哈希码和toString方法。我添加了一个关于我的选择查询方法的构造函数。