Primefaces SelectoneMenu-Enum


Merhaba,

Enum (Enumaration) nedir?

Proglama dillerinde sabitlere karşılık gelen değerlerdir. Örneğin haftanın günleri, aylar, cinsiyet, medeni hal vb. gibi durumları örnek verebiliriz.

PrimeFaces'da Selectonemenu'de ( html deki karşılığı dropdown) enum kullanarak veri getirme ve bunu veritabanında tutma ihtiyacı doğabiliyor. Bu tür veriler sabit olan veriler örneğin cinsiyet(Erkek,bayan),medeni hal(evli,bekar,boşanmış,dul) gibi verileri sabit olarak tutup bunları Selectonemenu'ye gösterme gibi durumlar söz konusu olabiliyor. Bu gibi durumda aşağıdaki işlemler doğrultusunda işimiz görülecektir.



1-Messages.properties de tanımlama yapmak

2-messages.properties dosyasını faces-config.xml e tanımlamak

3-Enum Class oluşturmak



messages.properties
#enum
situationP=Pending
situationE=Editing
situationI=Inserting
situationC=Closed



faces-config.xml
<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
   <application>
     <resource-bundle>
       <base-name>/messages</base-name>
       <var>messages</var>
     </resource-bundle>
   </application>
</faces-config>



enum class : EStiuation.java


public enum ESituation {

    /**
     * Pending
     */
    P(0),
    /**
     * Editing
     */
    E(1),
    /**
     * Inserting
     */
    I(2),
    /**
     * Closed
     */
    C(3);

    private final int label;

    private ESituation(int label) {
        this.label = label;
    }

    public int getLabel() {
        return label;
    }

}





SituationController.java


import com.kurtomerfaruk.enumonemenu.ESituation;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author Omer Faruk KURT
 * @Created on date 31/05/2016 18:23:24
 */
@ManagedBean
@ViewScoped
public class SituationController implements java.io.Serializable {

    private ESituation[] list;

    private int situation;

    public ESituation[] getList() {
        return ESituation.values();
    }

    public void setList(ESituation[] list) {
        this.list = list;
    }

    public int getSituation() {
        return situation;
    }

    public void setSituation(int situation) {
        this.situation = situation;
    }

    public void update() {
        FacesContext context = FacesContext.getCurrentInstance();

        context.addMessage(null, new FacesMessage("Successful", "Your situation label : " + situation));
    }

}


index.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:f="http://xmlns.jcp.org/jsf/core">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>

        <h:form>
            <p:growl id="growl" life="3000" showDetail="true"/>
            <p:selectOneMenu value="#{situationController.situation}">
                <f:selectItems value="#{situationController.list}" var="situation" itemValue="#{situation.label}" itemLabel="#{messages['situation' += situation]}"/>
                <p:ajax event="change" update="growl" listener="#{situationController.update()}"/>
            </p:selectOneMenu>
        </h:form>
    </h:body>
</html>

Sorunsuz javalı günler :)




Github

Yorum Gönder

0 Yorumlar