14 Eylül 2014 Pazar

Spring MVC ve JSLT ile controllerdan(java) view'a(jsp) değer göndermek-2 (Foreach + If)

Merhaba, bir önceki yazımda controllerdan aldığımız değerleri view katmanında nasıl listeleyeceğimizi görmüştük. Bu yazımda ise sizlere controllerdan set edilen değerleri listelerken If kontrolünün nasıl yapılacağını ve array lerin nasıl listeleneceğini inceleyeceğiz.

Yine intelliJ ile bir web(spring MVC) projesi oluşturarak işe başlayacağız.
projemizin bitmiş halinin görünümü(Hiyerarşik yapı) aşağıdaki gibi olacaktır.



ilk olarak controllerda bilgiler ve diller diye iki farklı arrayList tanımladım. diller ; programlama dilleri bilgisini tutacak  , bilgiler ise kişi bilgilerini(ad,soyad) tutacak.
NOT: Normal şartlarda bilgileri arrayListte tutmak size anlamsız gelebilir ancak jsp(view) sayfasında farklı iki foreach ve if kullanımına yer verdim. Kullanımlardaki farklılıkları daha kolay inceleyebilmeniz için böyle bir yöntem tercih ettim.

ListController.java 
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public ModelAndView index() {
        ModelAndView mv = new ModelAndView("index"); // index sayfasına gider

        HashMap<String, String> hashMap = new HashMap<String, String>();
        hashMap.put("adi", "Levent");
        hashMap.put("soyadi", "YILDIZ");

        ArrayList bilgiler = new ArrayList();
        bilgiler.add(hashMap);

        mv.addObject("bilgiler", bilgiler);

        List<String> list = new ArrayList<String>();
        list.add("C");
        list.add("Java");
        list.add("C++");
        list.add("C#");
        list.add("phyton");

        mv.addObject("diller", list);

        return mv;
    }


bu bilgileri ekrana basabilmek için yine bir önceki yazımda olduğu gibi jslt yi maven'a ekliyoruz.
pom.xml
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>



maven'a ekledikten sonra yine jsp sayfasının en üstünde jslt core'u çağırıyoruz.

index.jsp
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


bu işlemlerden sonra arraylist'i foreach ile ekrana basabiliriz.

index.jsp
<%--kullanım 1--%>
<c:forEach var="bilgi" items="${bilgiler}">
    <c:choose>
        <c:when test="${bilgi.adi!=null && bilgi.adi!=''}">
            <p> Adi :  ${bilgi.adi} &nbsp;</p>
        </c:when>
    </c:choose>
    <c:choose>
        <c:when test="${bilgi.soyadi!=null && bilgi.soyadi!=''}">
            <p> Soyadi :  ${bilgi.soyadi} &nbsp;</p>
        </c:when>
    </c:choose>
</c:forEach>


 index.jsp
<%--kullanım2--%>
<c:if test="${not empty diller}">

    <ul>
        <c:forEach var="listLangs" items="${diller}">
            <li>${listLangs}</li>
        </c:forEach>
    </ul>

</c:if>


üstteki kodları projenize ekleyip çalıştırdığınızda controllerdan doldurulan diller(Programlama Dilleri)  ve bilgiler(Kullanıcı Bilgileri) ekrana yazdırılacaktır. Ekran çıktısı aşağıdaki gibi olacaktır.

kaynak dosyalar(github) : indirmek için tıklayın

Hiç yorum yok:

Yorum Gönder