Örnek

SelectOneMenu ile Enum Kullanılan Bir Örnek

JSF'de bir sayfada enum değerlerini bir SelectOneMenu bileşenine yükleyebilirsiniz. Enum aşağıdaki gibi olsun:
public enum Test {
             
	ITEM1,
	ITEM2,
	ITEM3;
 
}
Bu enum kullanıldığı bean aşağıdaki gibi olsun :
import javax.faces.bean.ManagedBean;
import javax.faces.model.SelectItem;
 
@ManagedBean
public class EnumBean {
 
	private Test selected;
	public Test[] getEnums(){
			   
		return Test.values();
			   
	}
	public SelectItem[] getEnumsAsSelectItem() {
		SelectItem[] items = new SelectItem[Test.values().length];
		int i = 0;
		for(Test t: Test.values()) {
			items[i++] = new SelectItem(t, t.toString());
		}
		return items;
	}
	public String submit(){
			   
		System.out.println("selected value : " + selected);
		return "";
			   
	}
	public Test getSelected() {
		return selected;
	}
	public void setSelected(Test selected) {
		this.selected = selected;
	}
             
}
getEnums() ile Enum değeleri dizi olarak verilmektedir. İstenirse getEnumsAsSelectItem() ile de SelectItem listesi olarak alınabilir.
Form aşağıdaki gibidir :
<h:form>
 
	<h3>Enum Test 3</h3>
	<h:selectOneMenu value="#{enumBean.selected}">
		<f:selectItems value="#{enumBean.enums}"></f:selectItems>
	</h:selectOneMenu>
	<h:commandButton action="#{enumBean.submit}" value="Submit"></h:commandButton>
             
</h:form>
Submit düğmesine basıldığında console'de basılan elementin değeri gösterilir.
Enum'da title gibi bir başka özellik olabilir:
public enum Test {
             
	ITEM1("item 1"),
	ITEM2("item 2"),
	ITEM3("item 3");
	String title;
	Test(String title) {
		this.title = title;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
 
}
Eğer açılır listede title değerini göstermek istiyorsanız sayfada aşağıdaki gibi değişiklik yapabilirsiniz:
<h:selectOneMenu value="#{enumBean.selected}">
	<f:selectItems value="#{enumBean.enums}"
		var="t" itemLabel="#{t.title}" itemValue="#{t}"></f:selectItems>
</h:selectOneMenu>

Sayfada artık title alanı gözükecek , value olarak da enum'un kendisi kullanılacaktır.
zafer.teker , 23.02.2017

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir

Misafir Yorumları




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir