JSF DataTable Veri Silme

JSF DataTable listelenen verilerden seçtiğimizi silmek veya düzenlemek için f:setPropertyActionListener ile veri aktarımı yapabiliriz.
Bunun için aşağıda bir örnek bulunmakta. Öncelikle verileri taşımak için kullanacağımız bir bean oluşturalim. Bu bean ManagedBean değildir ve bu şekilde tanımlanmasına gerek bulunmamaktadır.

Ogrenci.java

    public class Ogrenci {
     public Ogrenci(Integer id, String ad, String soyad) {
      super();
      this.id = id;
      this.ad = ad;
      this.soyad = soyad;
     }
     
     private Integer id;
     private String ad;
     private String soyad;
     
     //getter ve setter metodları
    }

Şimdi verilere ulaşım ve diğer operasyonlar için gerekli olan managedBean imizi yaratıyoruz. Bu bean silme ve atama gibi operasyonlar için gereklidir. Silme operasyonunu ise
Bu arada constructor içerisinde test amaçlı veri yüklemesi yapıyoruz.

Ogrenci.java

    public class OgrenciBean {
     public OgrenciBean() {
      ogrenciler.add(new Ogrenci(1, "Melih", "Sakarya"));
      ogrenciler.add(new Ogrenci(2, "Ahmet", "Dursun"));
      ogrenciler.add(new Ogrenci(3, "Mehmet", "Yangin"));
      ogrenciler.add(new Ogrenci(4, "Yigit", "Darcin"));
     }
     
     private List<Ogrenci> ogrenciler = new ArrayList<Ogrenci>();
     private Ogrenci secilenOgrenci;
     
     public void sil(){
      System.out.println(secilenOgrenci.getAd() + " " + secilenOgrenci.getSoyad());
      //Silme operasyonuda burada yapılacak
     }
     //getter ve setter metodları
     
    }

Son olarakta veri listeleyecegimiz DataTable içeren jsf sayfamızı hazırlıyoruz. Buna göre bir action çalışacak ve f:setPropertyActionListener metodu ile silme işlemi gerçekleştirilecek.

ogrenci.jsp

    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <html>
     <head>
      <title></title>
     </head>
     <body>
      <f:view>
       <h:form>
        <h:dataTable value="#{ogrenciBean.ogrenciler}" var="ogr">
         <h:column>
          <f:facet name="header"><h:outputText value="Sil" /></f:facet>
          <h:commandLink action="#{ogrenciBean.sil}" value="Sil" >
           <f:setPropertyActionListener value="#{ogr}" target="#{ogrenciBean.secilenOgrenci}" />
          </h:commandLink>
         </h:column>
         <h:column>
          <f:facet name="header"><h:outputText value="Ad" /></f:facet>
          <h:outputText value="#{ogr.ad}" />
         </h:column>
         <h:column>
          <f:facet name="header"><h:outputText value="Soyad" /></f:facet>
          <h:outputText value="#{ogr.soyad}" />
         </h:column>
        </h:dataTable>
       </h:form>
      </f:view>
     </body>
    </html>
  1. Dec 1st, 2011 at 21:35 | #1

    Pardon hocam yukarıda konu isminde JSF yazıyor ve dosyanın uzantısıda jsp. Bu nasıl oluyor?

  2. Dec 1st, 2011 at 21:39 | #2

    JSF 1.2 de view kismini facelet yani xhtml yerine jsp ile yazabiliyordunuz. Daha dogrusu default bu sekilde idi.

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>