Saya memiliki template Freemarker yang berisi sekelompok placeholder yang nilainya diberikan saat template diproses. Saya ingin memasukkan bagian dari template jika variabel userName disediakan, seperti:
[#if_exists userName]
Hi ${userName}, How are you?
[/#if_exists]
Namun, manual FreeMarker tampaknya menunjukkan bahwa if_exists sudah usang, tetapi saya tidak dapat menemukan cara lain untuk mencapai ini. Tentu saja, saya bisa menyediakan variabel boolean isUserName dan menggunakannya seperti ini:
[#if isUserName]
Hi ${userName}, How are you?
[/#if]
Tetapi jika ada cara untuk memeriksa apakah userName ada maka saya dapat menghindari menambahkan variabel tambahan ini.
java
templates
freemarker
Dónal
sumber
sumber
Yang ini tampaknya lebih cocok:
http://freemarker.sourceforge.net/docs/ref_builtins_expert.html
sumber
Juga saya pikir if_exists digunakan seperti:
yang tidak akan rusak jika userName adalah null, hasilnya jika null adalah:
if_exists sekarang sudah usang dan telah diganti dengan operator default! seperti dalam
operator default juga mendukung nilai default, seperti:
sumber
if
pernyataan seperti yang diminta op.Saya pikir banyak orang ingin dapat memeriksa untuk melihat apakah variabel mereka tidak kosong dan juga jika ada. Saya pikir memeriksa keberadaan dan kehampaan adalah ide yang bagus dalam banyak kasus, dan membuat templat Anda lebih kuat dan kurang rentan terhadap kesalahan konyol. Dengan kata lain, jika Anda memeriksa untuk memastikan variabel Anda tidak nol DAN tidak kosong sebelum menggunakannya, maka templat Anda menjadi lebih fleksibel, karena Anda bisa melempar variabel nol atau string kosong ke dalamnya, dan itu akan bekerja sama dalam kedua kasus.
Katakanlah Anda ingin memastikan bahwa
p
itu lebih dari sekadar spasi putih. Kemudian Anda bisa memotongnya sebelum memeriksa untuk melihat apakah ituhas_content
.MEMPERBARUI
Abaikan saran saya -
has_content
hanya itu yang diperlukan, karena ia melakukan cek nol bersama dengan cek kosong. Melakukannyap?? && p?has_content
setara denganp?has_content
, jadi sebaiknya Anda gunakan sajahas_content
.sumber
Anda tidak dapat menggunakan
??
untuk menangani nilai yang hilang, sintaks yang lama adalah:sumber