2016-03-21 18 views
1

Çakıl veya freemarker'da bir şablonum var mı (Kullanmayı düşündüğüm iki motor). Ben sadece her iki motorlarında itiraz değişken adı bir haritası olabilir inanıyoruz bu değişkenleri içeren bir nesne sağlamanız gerekir, benim Java kodundaPebble/Freemarker için değişkenlerin/interpolasyonların tembel değerlendirilmesi

<Node> 
    <Element attribute="{{ VAR_A }}"/> 
    <Element attribute="{{ VAR_F }}"/> 
    <Element attribute="{{ VAR_N }}"/> 
</Node> 

: Bu gibi görünebilir. Ancak, veri modelini oluşturmak için, hangi değişkenlerin değerlerini hesaplayacağını bilmem gerekir. Çok fazla veri var. Kullanmayacaklarsa tüm VAR_A, VAR_B, VAR_C, VAR_D, VAR_E vb. Hesaplamak istemiyorum.

Şablonu çalıştırmadan önce gerekli değişkenlerin bir listesini almak için bu motorların birinde/her ikisinde bir yol var mı? Her bir öznitelik değerinin tembel değerlendirmesinin bir yolu

Düzelt: Kullanıcı tarafından tanımlanacak şekilde değerlendirmem gerektiğinde şablonun nasıl görüneceğine dair hiçbir fikrim yok. Sağladıkları değişkenler bile kullanıcı tanımlı dizeler olacak - bu yüzden verileri vermeden önce bunları almam (ve analiz etmem) gerekiyor.

+0

Modelinizin özellik değerlerinin tembel değerlendirmesini yapıp yapamayacağını mı soruyorsunuz? – Raedwald

+0

Esasen, evet. – AdamBourke

cevap

0

Freemarker kullanarak oluşturduğunuz her tür belgenin kendi şablonu olacaktır. Kullandığı değişkenler varsa her şablonun bir kümesi olacaktır. Java kodunuzda, değişken adlarını değerlerle eşleyen bir Map sağlarsınız. Her bir şablona karşılık gelen farklı bir Java yönteminiz varsa, bu yöntemler o şablon için en küçük gerekli haritayı oluşturabilir. Bu haritanın bir HashMap olması gerekmez; teorik olarak, get ve values (etc) yöntemlerinde tembel değerlendirme yapan Map arabirimini kendi uygulamanızı yazabilirsiniz. Ama bu, kesinlikle değerinden daha fazla sorun. Sağladığınız haritadaki değerlerin String nesnesi olması gerekmez; Freemarker, her bir nesnenin toString yöntemini kullanacak ve bu da bir tür temkinli değerlendirme sağlayacaktır.

+0

Bu durumda, şablonun önceden nasıl göründüğünü bilmeyeceğim ve her kullanıcı için farklı olmaları muhtemel. Şablondaki değişkenler kullanıcı tanımlı olacak, bu yüzden her birine yine de bakmam gerekecek. İhtiyacım olursa HashMap'i geçersiz kılabilirim - ama değişken listeyi almak için şablonu önceden değerlendirmenin bir yolu olduğunu umuyordum. – AdamBourke

+0

Bu hiç mantıklı değil. Tempkates kullanıcı tanımlıysa, kullanıcılar sistemi programlıyor, siz değil. Bunu yapmak istemiyorsun. – Raedwald

+0

Yazılım, kullanıcılar için büyük miktarda özelleştirilebilirlik sağlar. Fikir, kendi şablonlarını yazabilmeleri ve sistemimizdeki verilerle doldurabilmeleridir. Kullandıkları değişkenler, sistemde başka bir yerde tanımlanacaktır. Yapmak istediğimiz çok şey var. – AdamBourke