10 Eylül 2013 Salı

JSF de h:selectOneMenu ve h:selectManyListbox Bileşenlerinin Kullanımı

Bu iki component JSF uygulamalarında sıkça kullanılan componentler olmakla  beraber ManagedBean tarafında da işlenmesi oldukça önemlidir.
<h:selectOneMenu> componenti tıpkı combobox gibidir. <h:selectManyListbox> componenti ise tıpkı Java swing de ki list componenti gibidir.
Aşağıda bu bileşenlerin JSF sayfalarında nasıl kullanıldığı ve ManagedBean ler ile nasıl işlendiğini anlatan bir uygulama mevcuttur.

<h:outputText value="Meslek : " />
                    <h:selectOneMenu value="#{comyon.meslek}">
                        <f:selectItem itemValue="Öğrenci" itemLabel="Öğrenci" />
                        <f:selectItem itemValue="Mühendis" itemLabel="Mühendis" />
                        <f:selectItem itemValue="Doktor" itemLabel="Doktor" />
                        <f:selectItem itemValue="Avukat" itemLabel="Avukat" />
                        <f:selectItem itemValue="Asker" itemLabel="Asker" />
                    </h:selectOneMenu>

                    <h:outputText value="İlgi alanlarınız : " />
                    <h:selectManyListbox value="#{comyon.ilgiAlanlari}">
                        <f:selectItem itemValue="Yazılım" itemLabel="Yazılım"/>
                        <f:selectItem itemValue="Spor" itemLabel="Spor"/>
                        <f:selectItem itemValue="Kitaplar" itemLabel="Kitaplar"/>
                        <f:selectItem itemValue="TV" itemLabel="TV"/>
                        <f:selectItem itemValue="Tarih" itemLabel="Tarih"/>
                        <f:selectItem itemValue="Sosyoloji" itemLabel="Sosyoloji"/>
                        <f:selectItem itemValue="Matematik" itemLabel="Matematik"/>
                    </h:selectManyListbox>
Bu iki bileşen yukarıda görüldüğü gibi kullanılır. Ortaya aşağıda ki gibi bir görüntü çıkar.

Başka bir sayfaya buradan seçtiğimiz değerleri göndermek için ya da seçilen bu değerleri kontrol edebilmek için ManagedBean imiz aşağıda ki gibi olur.
package com.mesutemre;

import java.util.Date;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean(name = "comyon")
@RequestScoped
public class ComponentYonetim {
    private String meslek;
    private String[] ilgiAlanlari;
    public String getMeslek() {
        return meslek;
    }

    public void setMeslek(String meslek) {
        this.meslek = meslek;
    }

    public String[] getIlgiAlanlari() {
        return ilgiAlanlari;
    }

    public void setIlgiAlanlari(String[] ilgiAlanlari) {
        this.ilgiAlanlari = ilgiAlanlari;
    }

    public String getılgiAlaniInString() {
        String s = "";
        StringBuilder builder = new StringBuilder();
        if (ilgiAlanlari == null) {
            s += "";
        } else {
            for (int i = 0; i < ilgiAlanlari.length; i++) {
                if (i != 0) {
                    builder.append(",");
                }
                builder.append(ilgiAlanlari[i]);
            }

            s += builder.toString();
        }
        return s;
    }
}

Listbox dan veri alınırken dönen değerin bir String dizisi olduğuna dikkat ediniz. Dolayısıyla xhtml sayfasında ListBox dan dönen değeri yazdırırken getılgiAlaniInString metodunu kullanacağız
Bir başka makale de görüşmek üzere esen kalın…

Hiç yorum yok:

Yorum Gönder