Tyhmeleaf Expression

Merhaba arkadaslar, bu yazıda Thymeleaf’da kullanabilecegimiz expression’lara deginecegiz.

Expressionlar, özel karekterler ile kullanılan özel işlemler yapabilen yardımcı araçlardır. Java web yapısına aşina iseniz bu terimler size yabancı gelmeyecektir.

Type of Expression;

  1. Variable Expression
  2. Selection Variable Expression
  3. Message Expression
  4. Link/Url Expression

Toplam 4 adet expression tipini farklı amaç ve zamanlarda kullanıyor olacağız. Expressionlar, ayrı ayrı kullanılabildigi gibi nested olarak da kullanılabilir.

Expression’ların temelinde OGNL(Object-Graph Navigation Language) bulunmaktadır. Apache tarafından geliştirilmektedir. Başka bir yazının konusu olabilir.

Variable Expression

Kullanımı ${…} şeklindedir. Context üzerine bind edilmis variable/degiskenlere erisimde kullanılır.

Örnek kullanımı : ${name} bize name adlı degiskeni return eder, bu ifade Java kodunda şuna denk gelmektedir : ctx.getVariables().get(“name”);

Not : ctx, Context’i ifade eder, daha sonra deginecegim.

Yukarıda ifade ettigim gibi expression’lar nested olabilir, message expression içerisinde variable expression kullanılabilir örnek olarak.

Expression içerisinde ki degiskenin tipi ile ilgilenmez/ugrasmassınız. Bind edilen datayı nasıl kullanacagınızı bilmeniz yeterlidir. Örn;

Yukarıdaki name degiskenin bir string oldugunu varsayarsak bize string return edecektir. Degiskenin obje oldugunu(person) varsayarsak şöyle kullanabiliriz;

Degiskenin array oldugunu düsünürsek şöyle kullanabiliriz;

Degisken obje ise ve objeye ait methodları parametreli/parametresiz çağırabiliriz;

Variable expression içerisinde kullanabilecegimiz yardımcı/utility objeler mevcut. Bunlar; dates, calendar, locale, lists, array, maps gibi objeler. Kullanımı # + utiliy object şeklinde. Locale bilgisini gösterelim;

 Message Expression

Message expression, template için tanımlanmıs olan properties dosyasından mesajların okunmasını sağlar. Örn; home.html adında bir sayfanız var ise template’inizin home oldugunu varsayalım, message properties dosyanız ayni dizinde home_LANGUAGE seklinde olması gerekir. Örn; home_en.properties dediginizde dil olarak ingilizce mesaj gösterebilir, farklı lokasyon için home_tr gibi türkçe mesajları sadece tek bir işlem ile uygulama da dil ayarını switch edebilirsiniz. Bu mesajlara da message expression ile erişmekteyiz : #{…}

home_en.properties dosyamız;

Yukarıdaki mesajlara template içerisinde şöyle erişeceğiz;

Yukarıdaki ifade bize “Welcome to Thymeleaf Tutorials” mesajını döndürecektir. Message expression içerisinde parametrik kullanım da olabilir. Bunun için properties dosyamızı şöyle düzenleyelim;

Kullanımı ise şu şekilde;

Bize “Alican, Welcome to Thymeleaf Tutorials” değerini döndürecektir. Yukarıda expressionların iç içe kullanılabilecegini belirtmiştik. Bunu görelim;

Person objesinin name alanını variable expression ile alıp message expressionu içerisinde kullandık.

Selection Variable Expression

Selected variable expression(sve), variable expression ile beraber kullanılan, üzerinde işlem yapılan obje benzeri yapıların alanlarına erişme de kullanılır. Örneğin, elimizde bir persons array’i iterate ettigimizde person objelerinin alanlarına asterisk karekter ile dogrudan erisebiliriz. Şöyleki ;

^^ Session üzerinde user’ın alanlarına *{…} ile dogrudan eristik. SVE kullanmasaydık session.user.firstname gibi bir tanım ile kullanıyor olacaktık.

URL/LINK Expression

Url/link expressionlar adından anlasılabilecegi gibi link ve url tanımlamarında kolaylıklar sağlamaktadır. Temel kullanımı @{…} şeklindedir, örnekler üzerinden ilerleyelim;

^^ Link olarak relative /order/deBlockedls linkini üretecektir. Absolute ve relative path ve/veya dynamic url verilebilir link içerisinde.

^^ Yukarıda link olarak şu çıktıyı üretecektir : /order/deBlockedls?orderId=5 gibi (o, herhangi bir obje oldugunu varsayınız.) Birden fazla parametreyi “,” ile ayırabiliriz.

^^ Çıktı : /order/deBlockedls?orderId=5&type=BUY

Expression konumuzun sonuna geldik arkadaslar, bir sonraki yazıda örnek bir uygulama üzerinden bunları tekrar ele alacağız. Sonraki yazımda data bind etmeyi, bind edilen datayı kullanabilmeyi ve mesaj properties’ler nasıl kullanılır onu gösterecegim.

Mutlu ve esen kalın.

~ A.Akkus

 

 

1489 Total Views 3 Views Today